我从Weblogic 11g迁移到12c,在部署过程中它失败并显示以下错误:
Caused by: weblogic.application.naming.ReferenceResolutionException: [J2EE:160199]Error resolving ejb-ref "ejb/BizRuleFacade" from module "BizAgi-ejb.jar" of application "BizAgi-ear-Weblogic". The ejb-ref does not have an ejb-link and the JNDI name of the target bean has not been specified. Attempts to automatically link the ejb-ref to its target bean failed because multiple EJBs in the application were found to implement the "BizAgi.bpm.rules.entities.BizRuleFacade" interface, including BizAgi-war.war/BizRuleFacadeBean, BizAgi-ejb.jar/BizRuleFacadeBean. Specify a qualified ejb-link for this ejb-ref to indicate which EJB is the target of this ejb-ref.
我的web.xml文件如下所示:
<ejb-local-ref>
<ejb-ref-name>ejb/BAScopeLogFacade</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>BizAgi.PAL.historylog.entities.BAScopeLogFacade</local>
<ejb-link>BizAgi-ejb.jar#BAScopeLogFacadeBean</ejb-link>
</ejb-local-ref>
BizAgi-ejb.jar是耳内的一个模块(BizAgi-ear-Weblogic.ear)。
如何正确部署我的应用程序?
答案 0 :(得分:2)
非常感谢大家,我终于找到了解决方案,只需从.war文件中删除/删除META-INF / MANIFEST.MF文件即可。这样,EJB就不会被双重引用。
答案 1 :(得分:0)
确保在部署中不会多次加载相同的EJB。您可以通过使用weblogic控制台(AdminServer)并检查部署的EJB来进行检查(单击在部署概述中未通过的部署旁边的小“ +”号)。
在我的情况下,我必须修复maven依赖关系(将一个项目的一个依赖关系设置为“提供”),以使其不会两次加载相同的EJB。
答案 2 :(得分:0)
1。在Ear Pom.xml中添加以下依赖项
<dependency>
<groupId>com.example</groupId>
<artifactId>ejbModel</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
2。在Ear pom.xml的模块中添加ejb模块
<modules>
<ejbModule>
<groupId>com.example</groupId>
<artifactId>ejbModel</artifactId>
<bundleFileName>ejbModel-1.0-SNAPSHOT.jar</bundleFileName>
</ejbModule>
.......
</modules>
3。将ejbmodel依赖项的范围更改为应用程序pom.xml中提供的
<dependency>
<groupId>com.example</groupId>
<artifactId>ejbModel</artifactId>
<version>1.0-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
4。将ejbmodel应用程序的persistence.xml添加到资源文件夹
答案 3 :(得分:0)
错误: weblogic.management.DeploymentException:weblogic.application.naming.ReferenceResolutionException:[J2EE:160199]从模块解决ejb-ref“ com.xxx.xxx.xxx.xxx.xxx.xxx.XXXX / xxxRemote”时出错 应用程序“ XXX-X.X.X”的“ XXX-X.X.X.war”。 ejb-ref没有ejb-link,并且尚未指定目标Bean的JNDI名称。
解决方案:
<dependencies>
<dependency>
<groupId>co.xx.cxxxx</groupId>
<artifactId>xxxxx-ejb</artifactId>
<version>1.0</version>
<type>ejb</type>
<scope>provided</scope>
</dependency>
<dependencies>
xxxx.ear> xxxx.war> WEB-INF> lib> xxx-ejb.jar [删除]
这是因为存在对ejb.jar的双重引用,因此控制此问题的最佳方法是在pom(web)中说EJB类型为EJB,以便从中获取(ejb.jar)父级(EAR,其中添加了ejb模块)。
希望能对您有所帮助