2015-01-16 50 views
1

嗨StackOverflow社區,爲什麼我的JBoss模塊拋出ClassCastException?

我有一個部署到JBoss Wildfly 8.2實例的WAR。此外,在Wildfly,我已經創建了兩個模塊:

  1. 第三者JMS JCA適配器模塊,
  2. 和模型模塊,包含用於JMS代理和WAR之間通信消息類別(model.jar)

戰爭已經JBoss的部署,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> 

戰爭已經在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

這可能是您的類路徑中的兩個(或更多)版本com.company.model.web.dto.WebAuthenticationResponse之間的衝突。你能檢查你的類路徑中有什麼嗎? – jHilscher

+0

如何檢查Wildfly類路徑? Wildfly在運行時加載類,所以它們不會在執行命令中...? –

回答

2

假設你model.jar對應於您com.company.model模塊,您的WAR類加載器現在看到的模型類兩次,均是從自己的圖書館WEB-INF/lib並通過模塊依賴。

您應該導入或嵌入模塊/庫,但不能同時導入或嵌入。

順便說一句,導入RAR模塊看起來有點可疑。你不應該依賴於資源適配器的實現。也許你可以分解出一個API模塊並導入它。

+0

這不是人們如何在他們的Wildfly安裝中使用ActiveMQ?通過創建一個activemq模塊並將其導入到他們的項目中?還是他們將activemq設置爲默認的JMS提供程序? –

相關問題