0

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 インスタンスの再作成を回避する)

4

1 に答える 1