无法部署EAR文件
我正在开发struts2框架中的web模块和eclipse中的ejb模块,hibernate作为ORM框架。 每当我修改我的ejb模块时,我都必须将它打包到jar中并将其包含在我的web模块/ WEB-INF / lib文件夹中,以便运行我的整个应用程序。 虽然应用程序以这种方式运行良好,但它确实非常耗时。 所以我试着在EAR模块中映射它们。 但是当我尝试运行EAR模块时。 它给出了以下例外
2016-12-24 13:23:43,992 ERROR [org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler] (default task-4) Exception occurred during processing request: WFLYEJB0442: Unexpected Error: javax.ejb.EJBException: WFLYEJB0442: Unexpected Error at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:184) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277) at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:327) at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) at org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) Caused by: java.lang.NoClassDefFoundError: org/hibernate/HibernateException at com.ebs.persistence.dao.UserDao.(UserDao.java:16) at com.ebs.business.service.UserAuthorisationBusinessService.getUserProfile(UserAuthorisationBusinessService.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.hibernate.HibernateException from [Module "deployment.EBS.ear.EBS-ejb.jar:main" from Service Module Loader] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) ... 179 more
以下是我怀疑获得例外的地方
private static SessionFactory sessfct = SessionFactoryGenerator.getSessionFactory();
这似乎是classloader的一些问题。 从早些时候开始,当EAR不在图片中时,它可以与同一组jar子一起使用。 我可能是EAR的新手。 下面是application.xml的结构
EBS-web.war EBS-web EBS-ejb.jar
我也尝试在EAR lib文件夹中包含所有jar,但没有成功
您无法部署EAR
文件,因为找不到以下类。
java.lang.ClassNotFoundException: org.hibernate.HibernateException
确保您的服务器lib文件夹中有hibernate
库,或者包含在EAR
lib归档文件中。