我已经公开了一个Web服务,但是当客户端尝试使用该服务时,我可以看到服务器日志中有一个ClassCastException
异常。 并且请求未到达 Web 服务。当我尝试调用 Web 服务时,它正在从SOAP UI
.
java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext.
我尝试使用这两种解决方案
java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl 不能强制转换为 com.sun.xml.bind.api.JAXBRIContext
ClassCastException:不能强制转换为 com.sun.xml.internal.bind.v2.runtime.reflect.Accessor
但是在我的weblogic
文件夹中,我找不到冲突的jar。
经过调查,我发现了问题 这是由于客户端调用 Web 服务使用了错误的 wsdl。客户端使用的是旧的 wsdl,而托管的 Web 服务具有不同的 wsdl。
为了跟踪问题,我在服务器上启用了 http 日志记录以检查客户端发送的请求。将 SOAP-UI 请求与客户端请求进行比较后,我发现请求中的一个命名空间不同。确定问题后,我要求客户端使用新的 wsdl 生成存根类并调用 Web 服务,它起作用了。
混淆是由于以下例外造成的。所有的解决方案都要求检查冲突的罐子。
java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext.