0

我在我的应用程序中都使用了 Spring Web 服务和 Axis2。它们是完全独立的,而且效果很好,除了 Spring WebServiceTemplate 开始在下面抛出异常..

我怀疑这是因为 Spring 需要 saaj.jar(其中包含 javax.xml.soap.SOAPElement)而 Axis2 需要 axiom-dom.jar(其中包含 org.apache.axiom.om.impl.dom.ElementImpl)

这两个接口都扩展了 org.w3c.dom.Element 并以某种方式从 axiom-dom.jar 中获取了 Spring

除了可能将 axiom-dom.jar 重命名为 z-axiom-dom.jar 之外,我可以做些什么来防止 Spring 在运行时选择错误的实现,所以它在类路径的后面有什么想法?

com.sun.xml.wss.XWSSecurityException: com.sun.xml.wss.XWSSecurityException: java.lang.ClassCastException: org.apache.axiom.om.impl.dom.ElementImpl 不能转换为 javax.xml.soap.SOAPElement 在 org.springframework.ws.soap.security.xwss.XwsSecurityInterceptor.secureMessage(XwsSecurityInterceptor.java:139) 在 org.springframework.ws.soap.security.AbstractWsSecurityInterceptor.handleRequest(AbstractWsSecurityInterceptor.java:179) 在 org.springframework.ws .client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:542) at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502) at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive (WebServiceTemplate.java:351) 在 org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:341)

4

1 回答 1

3

这不是saaj和axiom-dom的冲突,而是saaj和axis2-saaj.jar的冲突。axis2-saaj 使用 axiom-dom,这就是异常指 Axiom 的原因。如果您不使用 Axis2 提供的 JAX-WS 实现,则不需要axis2-saaj,因此根据您的用例,删除它可能是一种解决方案。

于 2012-10-18T18:52:05.873 回答