2017-07-31 2 views
0

各リクエストでアクセストークンを必要とする外部サービスと統合する必要があります。アクセストークンは短い有効期限(わずか数時間)です。私は楽観的な方法でアクセストークンを使用することに決めました。私は現在のトークンで外部サービスを呼び出すつもりです。私は401を取得する場合、私はトークンをリフレッシュし、もう一度外部APIを呼び出すつもりです。RestTemplateインターセプタでexecution.execute()を2回呼び出す

私はClientHttpRequestInterceptorを使用して説明された再試行メカニズムを実装することに決めました。

public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException { 
    ClientHttpResponse response = execution.execute(request, body); 
    if(response.getStatusCode() == UNAUTHORIZED) { 
     refreshToken(); 
     updateToken(request); 
     response = execution.execute(request, body); 
    } 
    return response; 
} 

私はそれをテストして動作しますが、execute.execute()を2回呼び出すことはできますか?私は禁止されている情報は見つけられていませんが、その一方で、私はそのようなコードも見ていません。

答えて

0

私たちはまったく同じことをしており、問題があります。このコードスニペットでは、元の応答が無視され、正しく閉じられないため、接続がリークします。私の現在の解決策は、それを明示的に閉じてから2回目の実行を行うことです。これまでのところ動作するようですが、評価が必要だと思います。

関連する問題