2

我们正面临一个 jax-ws webservice 的问题,有时我们会遇到以下异常:

com.sun.xml.ws.streaming.XMLStreamReaderException: unexpected XML tag. expected: {http://www.company.com/system}getFooResponse but found: {http://www.company.com/system}getFoo
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.verifyTag(XMLStreamReaderUtil.java:214)
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.verifyTag(XMLStreamReaderUtil.java:222)
    at com.sun.xml.ws.client.sei.ResponseBuilder$DocLit.readResponse(ResponseBuilder.java:531)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:127)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:95)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:136)
    at $Proxy226980.getFoo(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor315.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:84)
    at $Proxy185.getFoo(Unknown Source)

异常在生产系统上偶尔(而且不经常)发生(总是在通常有很多调用的批处理作业中),我们无法在本地重现它。当异常发生时,批处理自然会失败,而且通常只是重新启动批处理作业以使其成功的问题。Web 服务不直接由我的项目负责,但如果需要,我们可以进行更改。

有没有人见过这个?似乎返回了响应,但“响应”部分被切断了。我不确定这是 Web 服务实现还是客户端代理的问题?

我不能 100% 确定使用了哪些版本,但我知道以下内容:

  • Web 服务使用 JAX-WS 生成并在 Oracle 的 WebLogic 服务器上运行
  • 客户端代理由 Oracle 的 JAX-WS 2.1.5 生成
  • 客户端代理在 Oracle WebLogic 容器中运行

有任何想法吗?

注意:我们目前没有记录原始请求/响应,这自然是我们会考虑的。我在这里发布这个问题,以防有人以前见过这个问题并可以指出我正确的方向。正如我所说,我不确定服务器是否正在生成错误的响应,客户端是否将其解释错误或中间的某些东西与 xml 混淆。

4

1 回答 1

1

您的堆栈跟踪显示您的客户端在内部,readResponse()所以我猜服务器正在以不正确的格式发回消息。你应该用嗅探器检查以确定。

于 2012-09-19T19:24:19.847 回答