【问题标题】:CWWJP0015E Error when creating entity manager factory for persistence unitCWWJP0015E 为持久性单元创建实体管理器工厂时出错
【发布时间】:2013-05-17 20:36:54
【问题描述】:

在 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=

对于不同的错误场景,错误信息是相似的,所以你在网上找到了很多解决方案,但没有一个适合。

【问题讨论】:

    标签: hibernate jpa persistence-unit


    【解决方案1】:

    如果有人再次遇到这个问题,就像最近我有一个非常简单的方法可以找到确切的原因,但是很容易忽略它。

    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 管理控制台 > 故障排除 > 日志和跟踪 > 服务器 > 诊断跟踪 > 更改日志详细级别 2. 将“com.ibm.ws.jpa.*”的日志记录级别设置为“所有消息和跟踪” 3.重启WebSphere

    【讨论】:

      【解决方案2】:

      确实,错误消息找不到类或包中的提示是正确的,尽管没有那么有用,因为没有告诉丢失的类名。

      在我的情况下,我的 persistence.xml 中列出了一个 类,该类不再存在。

      要查看此错误消息的来源,请查看Ejb3Configuration.addNamedAnnotatedClasses(...),您会发现以下内容:

      throw new PersistenceException( getExceptionHeader() +  "class or package not found", cnfe );
      

      所以cnfe ClassNotFoundException 中提供了找不到哪个类的信息,但不幸的是它没有以某种方式传播到日志文件。

      要访问信息,只需在此处放置一个调试断点并检查 cnfe 对象。

      【讨论】:

      • CNFException 信息的传播缺失可能是由于日志级别配置造成的。
      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      相关资源
      最近更新 更多