エラーメッセージは、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.../>
構成に設定します。