2012-01-10 76 views
4

我有4个模块的企业应用程序项目。它部署在WLS 10.3.4上。我正在使用eclipse helios进行eclipse的oracle web工具的开发。 我的机器上的本地WLS作为开发模式安装。项目的WLS 10.3.4 - 在作用域xxx_EJB.jar中没有名为'xxx'的持久性单元。可用的持久性单元:[]

结构是这样的:

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

共同罐,用来翻过模块在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) 

和一切工作正常本地在我的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安装为生产模式。

你有什么提示吗?

在此先感谢!

回答

0

服务器的版本是否相同?如果将所有内容都放入EJB jar中的JPA jar中,那么会发生什么?

+0

如果我把EJB模块它工作一切。如果我只有两个模块xxx_EJB和xxx_WEB。但我必须隔离层,所以我做了两个模块,JPA用于持久性,EJBClient用于接口。在这种情况下,我在测试服务器上部署ear时出错。 – Kenny 2012-01-10 14:30:16

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