您好StackOverflow社区,
我有一个WAR,我已经部署到JBoss Wildfly 8.2实例。同样在Wildfly中,我创建了两个模块:
WAR有一个jboss-deployment-structure.xml,它声明了对JCA模块的依赖:
<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="com.thirdparty.mq.ra" slot="main"/>
<module name="com.company.model" slot="main">
</dependencies>
</deployment>
</jboss-deployment-structure>
WAR将model.jar文件打包在其WEB-INF / lib文件夹中。
JMS模块依赖于模型模块:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.thirdparty.mq.ra">
<resources>
<resource-root path="."/>
<resource-root path="thirdparty-jms-provider.jar"/>
...
<resource-root path="thirdparty-lib.jar"/>
</resources>
<dependencies>
<module name="com.company.model"/>
<module name="javax.api"/>
<module name="javax.jms.api"/>
<module name="javax.transaction.api"/>
<module name="javax.management.j2ee.api"/>
<module name="javax.resource.api"/>
<module name="org.jboss.invocation"/>
<module name="org.jboss.remote-naming" optional="true"/>
<module name="org.slf4j"/>
</dependencies>
</module>
运行时,我收到以下异常:
Caused by: java.lang.ClassCastException: com.company.model.web.dto.WebAuthenticationResponse cannot be cast to com.company.model.web.dto.WebAuthenticationResponse
我怀疑这是一个类加载器问题。我是否需要在module.xml或jboss-deployment-structure.xml文件中指定一些额外信息?
感谢您的帮助!
答案 0 :(得分:2)
假设您的model.jar
对应于您的com.company.model
模块,您的WAR类加载器现在可以看到两次模型类,它们来自WEB-INF/lib
中自己的库以及模块依赖项。
您应该导入或嵌入模块/库,但不能同时导入或嵌入模块/库。
顺便说一句,导入RAR模块看起来有点可疑。您永远不应该依赖资源适配器的实现。也许你可以分解出一个API模块并导入它。