2012-08-31 57 views
0

我正在尋找執行使用Jersey客戶端(與Apache HTTP客戶端4.x版)執行並行POST Jersey客戶端有道請求

POST請求由於客戶端實例和WebResource實例的正確方法是線程安全的,該方法的自然編碼方式爲:

public AuthorizedAccount createAuthTokenFromUserPass(Credentials credentials) 
     throws AuthenticationServiceClientException { 
    ClientResponse response = resource.accept("application/x-protobuf").post(
           ClientResponse.class, credentials); 
    return getAuthorizedAccountFromResponse(response); 
} 

ClientResponse實例已正確釋放。

當此方法從多個線程執行時,它會通過將相同的憑據實例發送到服務器,爲每個線程結束。

解決方案將同步該方法,但將通過依次執行POST來結束。

有沒有不同的方式來做到這一點? (避免重新創建客戶端實例)

回答

0

花了很多時間試圖找出哪些工作不正常後,我發現問題並不在於澤西島的客戶端實現,而是在我自己的代碼中。我使用了MessageBodyWriter的自定義實現,在那裏我不夠小心。我沒有正確閱讀界面的合同。我在getSize()和writeTo()之間共享了一個實例變量,並且MassageBodyWriter被重用。

相關問題