18

考えられる原因:

org.apache.cxf.interceptor.Fault: Could not send Message.

Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking https://xxx.xxx.xxx.xxx:8443/services/test: Read timed out

通常、soap リクエストを に送信した後に発生しますws。を使用してapache cxfいます。wsタイムアウトが発生する前に、クライアントがさらに 2 つの要求を送信するため、 が稼働中であることは完全に確信しています。タイムアウトは、3 番目の SOAP 要求で発生します。

4

4 に答える 4

15

エラーメッセージは、Webサービスクライアントがネットワーク経由でリモートWebサービスからデータを受信しようとしたが、特定の期間データが受信されなかったため、Webサービスクライアントがデータの受信を待機しなくなったことを意味します。

考えられる原因の1つは、timeoutプロパティが低すぎることである可能性があります。デフォルトは、それぞれ30000および60000ミリ秒のcxfデフォルト値です。これらは、クライアントの作成方法に応じて変更できます。

Javaコードを使用してクライアントを作成している場合は、以下を使用できます。

//1 minute for connection
((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.connect.timeout", 1 * 60 * 1000); 

//3 minutes for request
((BindingProvider) wsPort).getRequestContext().put("com.sun.xml.ws.request.timeout", 3 * 60 * 1000); 

Springを使用している場合は、次のようなマップを使用できます。

<util:map id="jaxwsProperties">
    <entry key="com.sun.xml.internal.ws.request.timeout">
        <value type="java.lang.Integer">120000</value>
    </entry>
    <entry key="com.sun.xml.internal.ws.connect.timeout">
        <value type="java.lang.Integer">60000</value>
    </entry>
</util:map>

次に、そのマップを<jaxws:client.../>構成に設定します。

于 2013-02-01T09:12:44.473 に答える