WAR 类从其他 WAR 访问另一个类

thi*_*goh 2 java jboss war classloader wildfly-8

我是一个Jboss Wildfly 8.2实例,我有一个 webappROOT.war和另一个OTHER.war,我需要OtherXYZ.class里面的类OTHER.war能够访问RootXYZ.class. 我在某处读到过使用EAR这可能是可能的,但我不知道如何。

这是我需要实现的架构

                     ClassesVisibleToAllWars.jar
                     /          |              \    
            (access)/           |(access)       \(access)
                   /            |                \
            Root.war         Other1.war         Other2.war
           /                    |                    |
        R.class              O1.class              O2.class  
Run Code Online (Sandbox Code Playgroud)
  • 我不能创建/使用全局模块来放入wildfly/modules目录。我只能访问standalone/deployments/*目录
  • 例如,从、和 开始的所有类都ClassesVisibleToAllWars.jar必须可见R.classO1.classO2.class
  • 新的其他.war文件可能最终会被部署,并且这种行为必须持续存在

题

ClassesVisibleToAllWars.jar为了实现该模式,我应该放在哪里?

Rob*_*kal 5

您将无法从另一场战争中引用另一场战争中的班级。

如果您部署为耳朵,您可以将 RootXYZ.class 从 ROOT.war 中提取出来,然后将它放在一个 jar 中,该 jar 将位于两个战争的类路径上(通常在耳朵的 /lib 目录中)。我不确定在 Wildfly 中进行设置所需的确切步骤,但它通常是 META-INF/application.xml 中的设置,例如:

<library-directory>/lib</library-directory>
Run Code Online (Sandbox Code Playgroud)

由于在上面您已经将公共类提取到 jar 文件中,因此我可能只是将这个 jar 包含在每个 war 文件中,作为构建过程的一部分。