【问题标题】:ClassCastException with multiple wars deployed in TomcatClassCastException 与在 Tomcat 中部署的多个战争
【发布时间】:2011-09-08 14:41:06
【问题描述】:

我有两个 WAR 部署到同一个 Tomcat 7 实例,并且都使用 CXF + WSS4J。这两个应用程序通过 SOAP 进行通信,WSS4J 拦截器处理 SOAP 标头中的 SAML 断言。当单独测试每场战争时,一切正常,但是当两个应用程序都部署并且一个应用程序向另一个应用程序发送 SOAP 消息时,我收到以下 ClassCastException:

java.lang.ClassCastException: org.apache.ws.security.WSDocInfo cannot be cast to org.apache.ws.security.WSDocInfo

对我来说,这意味着类加载器问题,但具体是什么我无法弄清楚。每个应用程序在其各自的 WEB-INF/lib 文件夹中都有自己的 WSS4J 副本,我在 Tomcat 的公共库中看不到任何 WSS4J 库。

在生产中,这两个应用程序很可能永远不会使用同一个 JVM,更不用说在同一个 Tomcat 实例中了,但是当我了解这个问题的底部时,我会感觉更舒服。它还有助于从开发中的同一个 Tomcat 实例启动这两个应用程序。有没有人知道问题可能是什么?

更新 1: 我将每场战争部署在单独的 Tomcat 实例中,这些实例都使用相同的 JVM,并且 ClassCastException 消失了。一定是我对 Tomcat 类加载不了解的东西?

【问题讨论】:

  • Webapps 应该有独立的类加载器。有堆栈跟踪吗?

标签: tomcat classloader cxf wss4j


【解决方案1】:

来自 WSS4J 问题跟踪器:

https://issues.apache.org/jira/browse/WSS-282

STRTransform JCE 提供程序抛出 java.lang.ClassCastException:org.jcp.xml.dsig.internal.dom.DOMSubTreeData 与 Websphere 中的 javax.xml.crypto.OctetStreamData 不兼容

受影响的版本:1.6

咳咳……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2022-08-15
    • 2015-10-28
    • 1970-01-01
    • 2018-08-30
    • 2013-11-27
    • 1970-01-01
    相关资源
    最近更新 更多