jersey クライアント (apache http client 4.x を使用) を使用して POST リクエストを実行する適切な方法を探しています。
Client インスタンスと WebResource インスタンスはスレッドセーフであるため、メソッドをコーディングする自然な方法は次のようになります。
public AuthorizedAccount createAuthTokenFromUserPass(Credentials credentials)
throws AuthenticationServiceClientException {
ClientResponse response = resource.accept("application/x-protobuf").post(
ClientResponse.class, credentials);
return getAuthorizedAccountFromResponse(response);
}
ClientResponse インスタンスは適切に解放されます。
このメソッドが複数のスレッドから実行されると、スレッドごとに同じ資格情報インスタンスをサーバーに POST することによって終了します。
解決策はメソッドを同期することですが、最終的には POST を順番に実行することになります。
それを行う別の方法はありますか?(Client インスタンスの再作成を回避する)