繁体   English   中英

weblogic 12c 部署失败

[英]weblogic 12c deployment failure

我正在从 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)。

如何正确部署我的应用程序?

非常感谢大家,我终于找到了解决方案,只需从 .war 文件中删除/删除 META-INF/MANIFEST.MF 文件即可。 这样 EJB 就不会被双重引用。

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添加到资源文件夹

确保在您的部署中没有多次加载相同的 EJB。 您可以使用 weblogic 控制台 (AdminServer) 并检查部署的 EJB(通过单击部署概述中失败的部署旁边的小“+”号)来检查这一点。

在我的情况下,我必须修复 maven 依赖项(通过将一个项目的一个依赖项设置为“提供”),以便它不会两次加载相同的 EJB。

错误: weblogic.management.DeploymentException:weblogic.application.naming.ReferenceResolutionException:[J2EE:160199] 从模块“XXX-”解析 ejb-ref“com.xxx.xxx.xxx.xxx.xxx.xxx.XXXX/xxxRemote”时出错应用程序“XXX-XXX”的“XXXwar”。 ejb-ref 没有 ejb-link 并且没有指定目标 Bean 的 JNDI 名称。

解决方案:

1 解决方案:pom.xml(Web 项目)

<dependencies>
        <dependency>
            <groupId>co.xx.cxxxx</groupId>
            <artifactId>xxxxx-ejb</artifactId>
            <version>1.0</version>
            <type>ejb</type>
            <scope>provided</scope>
        </dependency>
<dependencies>

2 解决方案:删除xxxxx-ejb.jar

xxxx.ear > xxxx.war > WEB-INF > lib > xxx-ejb.jar [删除]

3 结论:

这是因为存在对 ejb.jar 的双重引用,因此控制这种情况的最佳方法是在 pom (web) 中声明它是 EJB 类型,以便从父级 (ejb.jar) 获取 (ejb.jar) EAR,其中添加了 ejb 模块)。

我希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM