簡體   English   中英

JBoss EAP 7 => ClassCastException:org.apache.jcp.xml.dsig.internal.dom.DOMReference無法強制轉換為org.jcp.xml.dsig.internal.dom.DOMReference

[英]JBoss EAP 7 => ClassCastException: org.apache.jcp.xml.dsig.internal.dom.DOMReference cannot be cast to org.jcp.xml.dsig.internal.dom.DOMReference

我收到此錯誤:

java.lang.ClassCastException:org.apache.jcp.xml.dsig.internal.dom.DOMReference無法強制轉換為org.jcp.xml.dsig.internal.dom.DOMReference

也許問題出在servlet的jboss-deployment-structure.xml上:

 <?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
  <deployment>
    <dependencies>
      <module name="javax.api"/>
      <module name="org.apache.santuario.xmlsec"/>
      <module name="org.apache.xerces" />
      <system export="true">
        <paths> 
          <path name="com/sun/org/apache/xerces/internal/dom"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

你有什么跡象嗎?

提前致謝。

您的問題是xmlsec庫版本不同。 org.apache.jcp.xml.dsig.internal.dom.DOMReference位於xmlsec-1.5.1.jar(JBoss中的org.apache.santuario.xmlsec模塊) org.jcp.xml.dsig.internal.dom.DOMReference在xmlsec-1.4.3.jar中(pom.xml中的依賴項)

Jboss 7使用隔離模塊https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7它很復雜,我真的不知道它是如何工作的。

但是如果簡化,當jboss啟動時,它會加載xmlsec-1.5.1,在啟動應用程序時,它會加載xmlsec-1.4.3。 因此,當在jboss和webapp類加載器之間傳遞DOMReference對象時,您會遇到類強制轉換異常。

您可以通過不同方式解決問題:

  • 在jboss-deployment-structure.xml中刪除org.apache.santuario.xmlsec模塊的依賴項。 應用程序將使用他自己定義的xmlsec-1.4.3庫
  • 在pom.xml中找到依賴關系xmlsec ,將版本設置為1.5.1,並將范圍設置為provided 應用程序將使用JBoss模塊和xmlsec-1.5.1
  • 如果您的代碼符合xmlsec依賴性,則在pom.xml中找到依賴項xmlsec並完全排除它。 應用程序將使用JBoss模塊和xmlsec-1.5.1

mvn:dependency:tree命令在這里有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM