如何强制 wildfly-8.2.1.Final 从目录而不是 war 加载 .class?

How to force wildfly-8.2.1.Final to load .class from a directory rather than war?

我想从给定目录加载 .class 文件,所以我将编译后的文件放在目录 /opt/wildfly-8.2.1.Final/modules/packagename/ 中,同时服务器加载 class来自同一目录而不是 war(WEB-INF/classes/packagename/).

我自己没有尝试过这个方法,但是你必须:

  1. /opt/wildfly-8.2.1.Final/modules/packagename/移动到 /opt/wildfly-8.2.1.Final/modules/custom-classes/main/packagename/
  2. 将文件 module.xml 添加到 /opt/wildfly-8.2.1.Final/modules/custom-classes/main/
  3. 将文件 jboss-deployment-structure.xml 添加到您的 war。
  4. 取消部署 war,重新启动服务器,然后重新部署 war。

module.xml的内容:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="custom-classes">
    <resources>
        <resource-root path="."/>
    </resources>
</module>

jboss-deployment-structure.xml 的内容:

<?xml version="1.0" encoding="UTF-8"?>  
<jboss-deployment-structure>  
    <deployment>  
         <dependencies>  
              <module name="custom-classes" />    
        </dependencies>  
    </deployment>  
</jboss-deployment-structure>

编辑:如果您想将 jars 和非 jared 类 添加到您的模块,您不仅必须将 jars 复制到 /opt/wildfly-8.2.1.Final/modules/custom-classes/main/,还必须在 module.xml 中列出 jars像这样:

<?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.3" name="custom-classes">
        <resources>
            <resource-root path="."/>
            <resource-root path="dependency1.jar"/>
            <resource-root path="dependency2.jar"/>
            <!-- and so on for other jars -->
        </resources>
    </module>

资源: