CXF で断続的なエラーが発生しています。応答はかなり大きく (数百 KB)、MTOM が有効になっており、CXF 要求/応答ロギング インターセプターの DEBUG を有効にすると、この投稿(未解決) と同様に問題が修正されます。私たちのプロジェクトは、CXF バージョン 2.2.9 を利用しています。
javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: [was class java.io.IOException] Strange I/O stream, returned 0 bytes on read
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:146)
at com.sun.proxy.$Proxy751.browseFiles(Unknown Source)
…
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: [was class java.io.IOException] Strange I/O stream, returned 0 bytes on read
at com.ctc.wstx.util.ExceptionUtil.throwRuntimeException(ExceptionUtil.java:18)
at com.ctc.wstx.sr.StreamScanner.throwLazyError(StreamScanner.java:731)
at com.ctc.wstx.sr.BasicStreamReader.safeFinishToken(BasicStreamReader.java:3657)
at com.ctc.wstx.sr.BasicStreamReader.getTextCharacters(BasicStreamReader.java:830)
at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleCharacters(StAXStreamConnector.java:323)
…
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
... 51 more
Caused by: java.io.IOException: Strange I/O stream, returned 0 bytes on read
at com.ctc.wstx.io.BaseReader.reportStrangeStream(BaseReader.java:148)
at com.ctc.wstx.io.UTF8Reader.loadMore(UTF8Reader.java:373)
…
私は当初、これは応答データの不正/無効な文字 (エンコーディング?) が原因であると考えていました。ただし、現在はネットワークの問題のように見えます。非常に奇妙です。サービスは、この問題が発生する前に問題なく長期間 (何年も) 動作していました。
なぜこのエラーが発生するのですか? デバッグ ログを有効にせずにこれを解決する方法はありますか?