Java WLS 10.3.4-没有命名为';xxx和x27;在xxx_EJB.jar范围内提供。可用持久性单位:[]
我有4个模块的企业应用程序项目。它部署在WLS 10.3.4上。我正在使用EclipseHelios与OracleWebToolsforEclipse进行开发。 我的机器上的本地WLS是以开发模式安装的 项目结构如下:Java WLS 10.3.4-没有命名为';xxx和x27;在xxx_EJB.jar范围内提供。可用持久性单位:[],java,jpa,ejb,persistence-unit,Java,Jpa,Ejb,Persistence Unit,我有4个模块的企业应用程序项目。它部署在WLS 10.3.4上。我正在使用EclipseHelios与OracleWebToolsforEclipse进行开发。 我的机器上的本地WLS是以开发模式安装的 项目结构如下: xxx_EAR |-> xxx_JPA |-> xxx_EJB |-> xxx_EJBClient |-> xxx_WEB 跨模块使用的通用JAR位于xxx\u EAR/APP-INF/lib中 在xxx_JPA内部是persistence.xml,它有
xxx_EAR
|-> xxx_JPA
|-> xxx_EJB
|-> xxx_EJBClient
|-> xxx_WEB
跨模块使用的通用JAR位于xxx\u 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是作为生产模式安装的
你有什么提示吗
提前谢谢 服务器的版本是否相同?如果您将JPA jar中的所有内容都放在EJB jar中,会发生什么情况呢?我遇到了相同的错误,但情况正好相反。我可以将EAR部署到生产环境中,也可以从WebLogic控制台进行部署,但我不能通过EclipseWebLogic插件在本地进行部署。对我有效的是在EJB项目的构建路径中更改javax.persistence_xxx.jar的版本 在我的例子中,我从javax.persistence_1.xxx更改为javax.persistence_2.xxx 希望这对别人有帮助。在我寻找这个问题的解决方案时,下面来自coderance的链接也对我有所帮助
如果我把所有东西都放在ejb模块中,它就会工作。如果我只有两个模块xxx_EJB和xxx_WEB。但我必须隔离层,所以我又制作了两个模块,JPA用于持久性,EJBClient用于接口。