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

时间:2018-07-13 08:49:36

标签: jboss wildfly classloader wildfly-8 war-filedeployment

我想从给定目录中加载.class文件,因此,我将编译后的文件放在目录/opt/wildfly-8.2.1.Final/modules/packagename/中,并且服务器还从同一目录而不是war中加载类。 (WEB-INF / classes / packagename /)。

1 个答案:

答案 0 :(得分:1)

我还没有尝试过这种方法,但是您必须:

  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添加到您的战争中。
  4. 取消部署战争,重新启动服务器,然后重新部署战争。

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>

编辑:如果要向模块添加jar和非jar类,则不仅必须将jar复制到/opt/wildfly-8.2.1.Final/modules/custom-classes/main/,而且还必须像这样在module.xml中列出jar:

<?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>

资源: