2013-08-05 3 views
0

Я пытаюсь развернуть MDB в WAS 8.5. Сеанс Factory инициализируется методом ejbCreate. Когда я пытаюсь развернуть приложение ejb загружается успешно, а затем отключает активацию очереди и предоставляет следующие исключения: Я не использую никаких фреймворков или MAven для построения, поэтому все банки и файлы конфигурации были добавлены в путь к классам, как в автономное приложение Java.Инициализировать сессию Спящего режима в EJB mdb?

Вот Hibernate и JavaEE Баночки Я using-

antlr-2.7.7 
c3p0-0.9.1 
commons-collections-3.2.1 
commons-logging-api-1.1.3 
dom4j-1.6.1 
hibernate-c3p0-4.1.5.Final 
hibernate-commons-annotations-4.0.1.Final 
hibernate-core-4.1.5.Final 
hibernate-entitymanager-4.1.5.Final 
hibernate-envers-4.1.5.Final 
hibernate-jpa-2.0-api-1.0.1.Final 
javassist-3.15.0GA.jar 
jboss-logging-3.1.0.GA.jar 
jboss-transaction-api_1.1_spec-1.0.0.Final 
jms-1.1 
log4j-1.2.15 
MySQL-connector-java-5.1.22 
slf4j-api-1.6.1 
javaee.jar 
javaee-api-6.0 

Вот исключение StackTrace из системных журналов

EJB threw an unexpected (non-declared) exception during invocation of method "onMessage".Exception data: 
      javax.ejb.EJBException: MDB PostConstruct failure; nested exception is: 
      java.lang.Exception: See nested Throwable 
    at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:472) 
    at com.ibm.ejs.container.MessageDrivenBeanO.initialize(MessageDrivenBeanO.java:427) 
    at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:147) 
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1238) 
    at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1356) 
    at com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate 
      (UncachedActivationStrategy.java:88) 
    at com.ibm.ejs.container.activator.Activator.preInvokeActivateBean(Activator.java:615) 
    at com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:4205) 
    at com.ibm.ejs.container.EJSContainer.preInvokeMdbActivate(EJSContainer.java:3709) 
    at com.ibm.ejs.container.MessageEndpointHandler.beforeDelivery 
      (MessageEndpointHandler.java:1449) 
    at com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod 
      (MessageEndpointHandler.java:866) 
    at com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:832) 
    at $Proxy50.beforeDelivery(Unknown Source) 
    at com.ibm.mq.connector.inbound.AbstractWorkImpl.run(AbstractWorkImpl.java:188) 
    at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:608) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783) 
      Caused by: java.lang.Exception: See nested Throwable 
    at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:470) 
    ... 15 more 
      Caused by: java.lang.NoClassDefFoundError: org.hibernate.HibernateException 
    at java.lang.J9VMInternals.verifyImpl(Native Method) 
    at java.lang.J9VMInternals.verify(J9VMInternals.java:85) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:162) 
    at com.hps.superenrollment.ejbmodule.SuperEnrollmentRequestMDB.ejbCreate 
      (SuperEnrollmentRequestMDB.java:42) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:611) 
    at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor 
      (InterceptorProxy.java:232) 
    at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed 
      (InvocationContextImpl.java:559) 
    at com.ibm.ejs.container.interceptors.InvocationContextImpl.doLifeCycle 
      (InvocationContextImpl.java:273) 
    at com.ibm.ejs.container.MessageDrivenBeanO.initialize(MessageDrivenBeanO.java:411) 

Пожалуйста, помогите мне, как я полностью потерял на то, что происходит не так Вот .

ответ

1

NoClassDefFoundError указывает, что некоторый класс Hibernate не находится в вашем классе. Вы уверены, что у вас есть все баны зависимости в вашем пути к классам (включая банки, которые необходимы во время выполнения)?

Исключение, указывающее, что вы должны использовать метод PostConstructor вместо конструктора класса bean, указывает, что вы должны использовать метод ejbCreate(). Это рекомендуемое местоположение для инициализации и загрузки зависимостей вашего MDB, так как оно вызывается одним единственным потоком контейнера ejb и гарантирует, что MDB был полностью сконструирован до того, как вы выполните конфигурацию в ejbCreate(). Он несколько похож на метод init в сервлете, который также гарантированно называется однопоточным контейнером сервлетов.

+0

Это может быть хорошо. Действительно, исключения, сбрасываемые при инициализации спящего режима, немного сложны. Они могут относиться к любому исключению конфигурации. Я бы дважды проверял конфигурацию и загружал ее с минимальной настройкой и отображением, если это возможно, чтобы уменьшить область ошибок. – Filip

+0

Filip, Спасибо за ваш вклад. Мой hibernate.cfg.xml уже является минимальным с только данными db, userid/password и классом сопоставления. Я попробую использовать ejbCreate для инициализации фабрики сеансов и дам вам знать, как все прошло! – user2634726

+0

Привет, Филипп, Теперь, когда я использую ejbCreate для инициализации sessionFactory .... Я получаю много исключений classnotfound для Hibernate. Поскольку я не использую Maven для сборки, как добавить баны Hibernate в classpath для разрешения исключений Classnotfound, которые происходят во время выполнения, поскольку банки не экспортируются в файл EAR. Пожалуйста, предложите, поскольку я смотрел на это в течение 2 дней подряд без разрешения! – user2634726

Смежные вопросы