2011-02-08 32 views
1

CXFベースのWebサービスからデータを消費する.netアプリケーションで作業しています。私は奇妙な切断問題に対してヒットしています。私はすべての適切なタイムアウトを設定しているが、要求は30秒よりも長くかかるほど、接続が壊れてきていると私はCXF.NETからCXF Webサービスを消費するタイムアウトの問題

at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34) 
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) 
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: com.ctc.wstx.exc.WstxIOException: null 
    at com.ctc.wstx.sw.BaseStreamWriter._finishDocument(BaseStreamWriter.java:1431) 
    at com.ctc.wstx.sw.BaseStreamWriter.writeEndDocument(BaseStreamWriter.java:553) 
    at org.apache.cxf.binding.soap.interceptor.SoapOutInterceptor$SoapOutEndingInterceptor.handleMessage(SoapOutInterceptor.java:282) 
    ... 39 more 
Caused by: org.eclipse.jetty.io.EofException 
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:148) 
    at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:92) 
    at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:46) 
    at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:55) 
    at java.util.zip.GZIPOutputStream.writeHeader(GZIPOutputStream.java:123) 
    at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:48) 
    at java.util.zip.GZIPOutputStream.<init>(GZIPOutputStream.java:58) 
    at org.apache.cxf.transport.common.gzip.GZIPOutInterceptor$GZipThresholdOutputStream.thresholdReached(GZIPOutInterceptor.java:284) 
    at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:62) 
    at org.apache.cxf.io.CacheAndWriteOutputStream.write(CacheAndWriteOutputStream.java:68) 
    at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:100) 
    at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:225) 
    at com.ctc.wstx.sw.BufferingXmlWriter.close(BufferingXmlWriter.java:198) 
    at com.ctc.wstx.sw.BaseStreamWriter._finishDocument(BaseStreamWriter.java:1429) 
    ... 41 more 
で、次のエラー

を取得する場合、私は、両側に考えることができます

そして、WCFのために、さまざまな多くの問題のルートにデフォルトのエラーであるように思わ.NETエラー

The underlying connection was closed: The connection was closed unexpectedly. ---> System.Net.WebException: The underlying connection was closed: The connection was closed unexpectedly. 

SoapUiを使用してCXFサービスに接続し、操作の1つにブレークポイントを設定すると、30秒のタイムアウトよりも長く応答を遅延させることができ、再開が許可されると、問題とそれは私がそれを切断しているネットの側があると信じている。

.netクライアントは、すべての適切なタイムアウトで構成されており、実行している30秒よりもはるかに大きいです。

<binding name="serviceBinding" sendTimeout="20:00:00" receiveTimeout="20:00:00" openTimeout="20:00:00" closeTimeout="20:00:00"> 
    <gzipMessageEncoding /> 
    <httpTransport manualAddressing="false" decompressionEnabled="False" maxBufferPoolSize="2147483647"  
      maxReceivedMessageSize="2147483647" allowCookies="false" authenticationScheme="Anonymous" 
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true"  
      maxBufferSize="2147483647" proxyAuthenticationScheme="Anonymous" 
      realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" /> 
</binding> 

ここでは間違っているかもしれないが、接続を中断して破損する可能性がありますか? gzipMessageEncodingは標準ではありませんが、リクエストが30秒未満のすべてのケースで正しく機能します。私はどんな提案にも大いに感謝しています。

ありがとう

スティーブ。

答えて

1

エラーメッセージは一致しませんが、hereを参照してください。非同期操作には、コードでのみ設定できるタイムアウトがあります。これは実行中のタイムアウトになる可能性があります(私が言ったように、エラーメッセージは一致しないようです)。実際のドキュメントはhereです。

また、WireSharkを利用して実際のTCP切断メッセージをキャッチして、どちらの側が実際に切断を開始するかを確認することもできます。

+0

ポインタのおかげでありがとう、ああ、これはすでに試みられていた。しかし、乾杯! – sgargan

関連する問題