CXF サービスを生成し、120000ms = 2min
両方のタイムアウトを設定しました。
requestContext.put("javax.xml.ws.client.receiveTimeout", 120000);
requestContext.put("javax.xml.ws.client.connectionTimeout", 120000);
それは正常に動作しています。私はそれをテストしました20s, 1min, 3min
-正確にその時間の応答を待っているたびに。
ただし、オンにしようとすると問題が発生し5min
ます。サービスは の応答のみを待ってい~240800ms = ~4min
ます。
jboss esb サービスを呼び出しています。これは最大持続し5min
ます。CXF サービスは.jar
、PC から単純なアプリケーション内から呼び出されるため、間に他のサーバー/コンテナーはありません (Tomcat など)。
タイムアウト設定を修正するアイデアはありますか?
を使ってApache CXF 3.0.1
編集
2 つの異なるメッセージを受け取っていることに気付いたのは、タイムアウトの設定によって異なります。
<=4min
(my または @pedrofb メソッドを介して)に設定すると、その時間の後に次のようになります。org.apache.cxf.interceptor.Fault: メッセージを送信できませんでした。org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) で org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307) で org.apache.cxf.endpoint.ClientImpl .doInvoke(ClientImpl.java:516)
原因: java.net.SocketTimeoutException: SocketTimeoutException 呼び出しhttp://esb:8080/MyService/ebws/Category/MyService : 読み取りタイムアウト
>4min
またはに設定すると0
、次のようになります。javax.xml.ws.soap.SOAPFaultException: サービス [Category:MyService] に対する応答がありません。再試行しないように指示されました。
正直なところ、私は予想される結果が何であるかについてかなり混乱しています(最初の結果だと思います)
編集2
MyService
経由でテストしSoapUI
ました。5min
そこにタイムアウトを設定し、サンプルリクエストで撮影します。
繰り返しますが、4分少し経った後、次の結果が得られます。
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>No response received for service [Category:MyService], Told not to retry.</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
ただし、Jboss ESB のログを調べると、例外もエラーもなく、MyService
さらに 1 分 (約 5 分) 持続し、通常の応答を返します。これは、監査ツールによって確認されます (すべての要求を esb に登録します。応答と時間)。
@pedrofbがコメントで言及したことについて、この点が指摘されていると思います。これが何であるかについての提案はありますか?