我收到以下形式的 JAXBException
类 SomeClass 或其任何超类在此上下文中是已知的。
完整的堆栈跟踪如下所示:
javax.xml.ws.WebServiceException: javax.xml.bind.JAXBException: class com.myCompany.generatedCode.WebServiceOperationName 或其任何超类对此上下文都是未知的。 在 org.apache.axis2.jaxws.ExceptionFactory.createWebServiceException(ExceptionFactory.java:175) 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:70) 在 org.apache.axis2.jaxws.ExceptionFactory.makeWebServiceException(ExceptionFactory.java:128) 在 org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:586) 在 org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.doInvoke(AxisInvocationController.java:130) 在 org.apache.axis2.jaxws.core.controller.impl.InvocationControllerImpl.invoke(InvocationControllerImpl.java:93) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:364) 在 org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:185) 在 $Proxy41.deleteAccount(未知来源) 在 com.myCompany.myPackage.MyWebServiceClient.callSomeWebService(MyWebServiceClient.java:100) (特定于我的应用程序和框架的其他类) ... 造成的: javax.xml.bind.JAXBException: com.myCompany.generatedCode.WebServiceOperationName 类或其任何超类对此上下文都是未知的。 在 com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:556) 在 com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:452) 在 com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:314) 在 com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:243) 在 javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:75) 在 com.ibm.xml.xlxp2.jaxb.marshal.MarshallerProxy.marshal(MarshallerProxy.java:100) 在 org.apache.axis2.datasource.jaxb.JAXBDSContext$1.run(JAXBDSContext.java:470) 在 org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:76) 在 org.apache.axis2.datasource.jaxb.JAXBDSContext.marshalByElement(JAXBDSContext.java:455) 在 org.apache.axis2.datasource.jaxb.JAXBDSContext.marshal(JAXBDSContext.java:414) 在 org.apache.axis2.jaxws.message.databinding.impl.JAXBBlockImpl._outputFromBO(JAXBBlockImpl.java:189) 在 org.apache.axis2.jaxws.message.impl.BlockImpl.outputTo(BlockImpl.java:372) 在 org.apache.axis2.jaxws.message.impl.BlockImpl.serialize(BlockImpl.java:296) 在 org.apache.axiom.om.impl.llom.OMSourcedElementImpl.internalSerializeAndConsume(OMSourcedElementImpl.java:808) 在 org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:975) 在 org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:1016) 在 org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.serializeInternally(SOAPEnvelopeImpl.java:271) 在 org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:233) 在 org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:1016) 在 org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:488) 在 org.apache.axis2.transport.http.SOAPMessageFormatter.writeTo(SOAPMessageFormatter.java:88) 在 com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.writeMessage(SOAPOverHTTPSender.java:3271) 在 com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.sendChunkedRequest(SOAPOverHTTPSender.java:888) 在 com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.sendSOAPRequest(SOAPOverHTTPSender.java:807) 在 com.ibm.ws.websvcs.transport.http.SOAPOverHTTPSender.send(SOAPOverHTTPSender.java:611) 在 com.ibm.ws.websvcs.transport.http.HTTPTransportSender.invoke(HTTPTransportSender.java:364) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:531) 在 org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:401) 在 org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:228) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) 在 org.apache.axis2.jaxws.core.controller.impl.AxisInvocationController.execute(AxisInvocationController.java:581) ... 52 更多
触发这种情况的原因是尝试调用名为WebServiceOperationName
. 我已经看到了处理此错误的其他技巧,这些技巧通常涉及添加@XmlSeeAlso
注释或调整编组和解组的方式。
在这种情况下,我正在调用一个 Web 服务,其代码由 Maven 基于 WSDL(和支持模式)生成。我无法直接控制 Maven 生成的代码,也无法控制 marshall/unmarshall 调用。应用程序中的其他 web 服务调用似乎没有任何问题。
更奇怪的是,我无法在本地服务器上重现它,尽管它发生在开发服务器上。为 Web 服务生成的 JAR 与应用程序的其余代码相同。
这个例外在本周突然出现(并且一直如此),我怀疑环境发生了一些变化,但我不确定是什么。有任何想法吗?
一个新的观察:
我在服务器启动/重启后第一次尝试在服务器上运行此代码时,它需要一段时间(大约一分钟)才会失败并引发异常。之后的每一次,异常几乎都是瞬间的……
更多的信息:
WebSphere 7.0.0.23(在服务器上)中存在此问题,但在 WebSphere 7.0.0.7(在工作站上)中不存在。