原创

如何使 EJB 将传递依赖 JAR 导出到依赖 EAR

温馨提示:
本文最后更新于 2024年04月12日,已超过 37 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

我有一只耳朵,也就是说first-ear.ear,其中有一个EJB,也就是说first-ejb.jar,所以它application.xml会是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
         version="6">
  <display-name>First App</display-name>
  <module>
      <ejb>first-ejb.jar</ejb>
  </module>
</application>

然后我还有另一只耳朵,例如second-ear.ear,它声明了对第一个 EAR 的 EJB 模块的依赖关系。因此,在 JBoss EAP 中我有以下内容jboss-deployment-structure.xml

<?xml version="1.0" encoding="utf-8"?>
<jboss-deployment-structure>
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
  <deployment>
    <dependencies>
      <module name="deployment.first-ear.ear.first-ejb.jar" export="true"/>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

现在,我需要做一下备份first-ejb.jar两部分:

  • 仍称为first-ejb.jar,以保持相同的EJB名称,但它是原始版本的专业版本first-ejb.jar
  • 另一个叫first-common.jar,其中包含一些最初定位first-ejb.jar

当然first-common.jar是去的first-ear.ear它甚至可能是一个普通的JAR,而不是EJB本身,除非严格需要。

我现在看到的问题是,当我运行时second-ear.ear,部署失败,因为某些类first-ejb.jar现在需要类first-common.jar,而这些类似乎没有“导出”到second-ear.ear部署模块(所以我在尝试部署时遇到NoClassDefFoundError/错误)。ClassNotFoundExceptionsecond-ear.ear

解决这个问题的正确方法是什么,可能需要我更改配置组件second-ear.ear?没有办法告诉第一个耳朵first-common.jar导出时first-ejb.jar到依赖模块时也可以交付(并且静默)导出?

正文到此结束
热门推荐
本文目录