与Webis2的Spring webservicetemplate jar冲突问题

时间:2012-10-17 23:13:03

标签: java spring classpath axis2 spring-ws

我在我的应用程序中使用Spring Web服务和Axis2。它们是完全独立的,它工作得很好,除了Spring WebServiceTemplate开始抛出以下异常..

我怀疑它正在发生,因为Spring需要saaj.jar(它有javax.xml.soap.SOAPElement)而Axis2需要axiom-dom.jar(它有org.apache.axiom.om.impl.dom.ElementImpl)< / p>

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

我可以做些什么来防止Spring在运行时选择错误的实现,而不是将axiom-dom.jar重命名为z-axiom-dom.jar,所以它稍后在类路径中?

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)          在org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:502)          在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:351)          在org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:341)

1 个答案:

答案 0 :(得分:3)

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