繁体   English   中英

在EJB mdb中初始化Hibernate SessionFactory?

[英]Initialize Hibernate SessionFactory in a EJB mdb?

我正在尝试在WAS 8.5中部署MDB。 会话Factory正在ejbCreate方法中初始化。 当我尝试成功部署应用程序时,ejb加载成功,然后它关闭了队列激活并给出了以下异常-我没有使用任何框架或MAven进行构建,因此所有jar和配置文件都已添加到类路径中,如独立的Java应用程序。

这是我正在使用的Hibernate和JAVAEE Jars-

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)

请帮助我,因为我完全不了解这里出了什么问题。

NoClassDefFoundError指示某些Hibernate类不在您的类路径中。 您确定您的类路径中包含所有依赖项jar(包括运行时所需的jar)吗?

指示您应使用PostConstructor方法而不是Bean类构造函数的异常指示您应使用ejbCreate()方法。 这是初始化和加载MDB依赖关系的建议位置,因为ejb容器的一个单线程调用了它,并确保在执行ejbCreate()中的配置之前已完全构建MDB。 它在某种程度上类似于servlet中的init方法,该方法也保证由servlet容器称为单线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM