WLS 10.3.4 - 范围xxx_EJB.jar中没有名为“xxx”的持久性单元。可用的持久性单位:[]

时间:2012-01-10 12:22:59

标签: java jpa ejb persistence-unit

我有4个模块的企业应用程序项目。它部署在WLS 10.3.4上。我正在使用eclipse helios进行开发,使用oracle的oracle web工具。 我机器上的本地WLS作为开发模式安装。

项目结构是这样的:

xxx_EAR
|-> xxx_JPA
|-> xxx_EJB
|-> xxx_EJBClient
|-> xxx_WEB

跨模块使用的常见罐子在xxx_EAR / APP-INF / lib

中 xxx_JPA中的

是具有三个持久性单元的persistence.xml,而在xxx_EJB中是使用@PersistentContext引用它们的类,bean。

EJB version is 3.0
JPA is 1.0 (Eclipselink 1.1.x)

在我的copmputer本地一切正常。 当我尝试在测试WLS上部署EAR文件时,我遇到了异常

Unable to deploy EJB: XxxFacadeImpl from xxx_EJB.jar:

No persistence unit named 'xxx_EJB' is available in scope xxx_EJB.jar. Available persistence units: []
    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:469)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:518)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)

...

只有差异,如我所见,服务器之间处于安装模式,测试WLS安装为生产模式。

你有什么提示吗?

提前感谢!!

2 个答案:

答案 0 :(得分:0)

服务器的版本是否相同?如果将所有内容放在EJB jar中的JPA jar中会发生什么呢?那么它会起作用吗?

答案 1 :(得分:0)

我有同样的错误,但相反。我可以将EAR部署到生产或从WebLogic控制台部署,但我无法通过Eclipse Weblogic插件在本地部署。对我有用的是在EJB项目的构建路径中更改javax.persistence_xxx.jar的版本。

在我的情况下,我从javax.persistence_1.xxx更改为javax.persistence_2.xxx。

希望这有助于某人。在我寻找这个问题的解决方案时,coderance下面的链接也帮助了我。

http://www.coderanch.com/t/578851/EJB-JEE/java/persistence-unit-named-scope-BL