2017-02-19 7 views
1

Jaxrs(WebClientなど)では、接続タイムアウトと読み取りタイムアウトを設定できます。グローバルタイムアウトを設定するJaxrs機能(接続+読み取り)

ClientConfiguration c = WebClient.getConfig(client); 
    HTTPConduit http = c.getHttpConduit(); 
    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); 
    httpClientPolicy.setConnectionTimeout(timeout); 
    httpClientPolicy.setReceiveTimeout(timeout); 
    httpClientPolicy.setAllowChunking(false); 
    http.setClient(httpClientPolicy); 

私は、私は本当に接続中または受信中に費やされているどのくらいの時間を気にしないの両方を含んでタイムアウトを設定したいと思いますが、私の要件は、X秒で応答を取得するか、単に検索を破棄することです。

答えて

1

CXFでは、接続と受信の両方の時間を考慮した要求に対して最大タイムアウトを設定する方法はありません。リクエストの最大タイムアウトは、次のようになります。Apache HTTP clientと同様の質問を参照してください。この問題を回避するには、別のスレッドにタイマーを設定して、最大タイムアウトが切れたときに接続を中止することができます。

+0

インターセプターを経由している可能性がありますが、実行可能かどうかわかりません – cocorossello

+1

'WebClient' javadocと現在のリクエストを中止することはできないため、インターセプタを使用することはできません。これは、メインリクエスト(および応答/タイムアウトまでブロックされているメインスレッド)と同じスレッドで実行されるためです。タイムアウトを指定して追加の監視スレッドを作成し、タイムアウトまたは正しい応答の両方の場合に、非同期で作業する必要があります。それが価値あるものかどうかを検討してください... – pedrofb

関連する問題