CWWJP0015E为持久性单元创建实体管理器工厂时出错

时间:2013-05-22 17:10:18

标签: hibernate jpa persistence-unit

在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中找到许多解决方案,但它们都不适合。

2 个答案:

答案 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