1 回答
TA贡献1868条经验 获得超4个赞
如您所知,Wildfly 具有模块化的类加载结构。每个模块都有自己的类加载器。类类型相同是不够的。在类加载器中必须相同。在JBoss 文档中:
WildFly 的类加载基于必须定义对其他模块的显式依赖项的模块。WildFly 中的部署也是模块,并且无法访问在应用程序服务器中的 jar 中定义的类,除非定义了对这些类的显式依赖。
您可以创建自定义模块并在此模块中提供 .ears 加载 jar。在$JBOSS_HOME/modules/com/example/main/中创建module.xml文件,将要加载的 jar 名称写入module.xml。
<module xmlns="urn:jboss:module:1.5" name="com.example">
<resources>
<resource-root path="sample.jar"/>
</resources>
将jar复制到module.xml所在路径。
+-----com
+-----example
+-----main
module.xml
sample.jar
在 .ears 中创建部署描述符(jboss-deployment-structure.xml)并将您的模块添加到此文件中。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<deployment>
<dependencies>
<module name="com.example" export="true" />
</dependencies>
</deployment>
</jboss-deployment-structure>
所以,Jar 的类加载器是相同的。
添加回答
举报