1

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

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

4

2 回答 2

1

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

就我而言,我的persistence.xml中列出了一个类,该类不再存在。

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

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

因此,找不到哪个类的信息在 中可用,cnfe ClassNotFoundException但不幸的是,它没有以某种方式传播到日志文件。

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

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

于 2015-02-18T01:56:59.857 回答