在IBM WebSphere Application Server WAS 7中启动EJB应用程序时遇到以下错误。
JPAPUnitInfo E CWWJP0015E:发生错误 org.hibernate.ejb.HibernatePersistence持久性提供程序 试图为其创建容器实体管理器工厂 * YOUR_PERSISTENCE_UNIT *持久性单位。发生以下错误:[PersistenceUnit:* YOUR_PERSISTENCE_UNIT *] 类或包 找不到
虽然在启动过程中可能会忽略此错误消息,但最迟在您尝试获取实体管理器时,您将看到此错误:
javax.ejb.EJBException:注入失败;嵌套异常是: java.lang.IllegalStateException:EntityManagerFactory还没有 为PU创建:PuId =
错误消息类似于不同的错误情况,因此您可以在Web中找到许多解决方案,但它们都不适合。
答案 0 :(得分:1)
确实来自错误消息类或未找到包的提示是正确的,但没有那么有用,因为没有告知缺少的类名。
在我的情况下,我的 persistence.xml 中列出了类,该类已不再存在。
要查看此错误消息的来源,请查看Ejb3Configuration.addNamedAnnotatedClasses(...)
,您会找到以下内容:
throw new PersistenceException( getExceptionHeader() + "class or package not found", cnfe );
所以cnfe ClassNotFoundException
中没有找到找不到哪个类的信息,但遗憾的是它不会以某种方式传播到日志文件中。
要访问信息,只需在其中放置调试断点并检查cnfe
对象。
答案 1 :(得分:0)
如果有人再次遇到这个问题,就像最近我找到确切原因的方法非常简单,但很容易忽视它。
此异常的精确日志未显示在WebSphere的主SystemOut / Err日志中。然而,它可以在ffdc日志中找到(即%APP_PROGILE_PATH%\ logs \ ffdc)。
查找
等条目 [2/18/15 1:49:25:547 UTC] 0000004e FfdcProvider W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on \IBM\AppSrv\logs\ffdc\server1_6d42a5e6_15.02.18_01.49.25.1322237127215208595734.txt com.ibm.ws.jpa.management.JPAPUnitInfo.createEMFactory 759
在SystemOut.log中的CWWJP0015E例外之前找出事件的确切文件名。
如果此例外没有条目,请尝试设置更高的日志级别。但是,默认WebSphere设置不应该要求它。 1.转到:WebSphere管理控制台&gt;疑难解答&gt;记录和追踪&gt;服务器&gt; <诊断追踪>更改日志详细级别 2.设置&#34; com.ibm.ws.jpa。*&#34;的日志记录级别。到&#34;所有消息和痕迹&#34; 3.重新启动WebSphere