0

我最近开始着手迁移我们的大型应用程序,该应用程序包含一个 EAR,其中包含 40 多个独特的单独 EJB jar 项目、一个 Web 应用程序和几个 Java 模型项目,其中包含应用程序的实用程序和帮助程序类。

我们目前正在使用 WebSphere Network Deployment (WAS ND 8.5.5)。WAS 提供了一种使用共享库定义外部库的简单方法。尽管我可以非常多地使用 WildFly 全局模块来提供所有外部库,但我们希望以正确的方式做到这一点,即使用模块。

这是我到目前为止所尝试的:

  1. module.xml在内部定义了一个自定义%%WildFly_Install_Dir%%/modules/gov/abc/def/main并复制了外部库以查看它是否在服务器启动期间启动。

    内容module.xml为:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="gov.abc.def">
<resources>
<resource-root path="."/>
</resources>
</module>
  1. 使用MANIFEST.mf内部 EAR->META-INF 引用它,因此将来不存在可移植性问题,但即使在创建模块并在MANIFEST.mfEAR 中引用模块之后,我仍继续NoClassDefFoundError进行部署。

  2. 然后,我尝试创建jboss-deployment-structure.xml并创建相应的部分来引用我创建的自定义模块,它也没有工作,同样的NoClassDefFound错误来了。

有人可以帮我解决如何实现模块化设置并仍然正确部署应用程序吗?

4

1 回答 1

2

您需要将每个 JAR 显式定义为<resource-root/>.

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="gov.abc.def">
    <resources>
        <resource-root path="some.jar"/>
        <resource-root path="other.jar"/>
    </resources>
</module>
于 2016-03-14T16:15:55.213 回答