4

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

项目结构是这样的:

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

跨模块使用的常见 jar 位于 xxx_EAR/APP-INF/lib

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

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

并且在我的电脑上本地一切正常。当我尝试在测试 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 安装为生产模式。

你有什么提示吗?

提前致谢!!

4

2 回答 2

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

于 2015-04-17T15:00:46.693 回答
0

服务器的版本是一样的吗?如果您将 JPA jar 中的所有内容都放在 EJB jar 中,会发生什么情况,那么它会起作用吗?

于 2012-01-10T13:41:34.097 回答