2011-07-08 118 views
0

我正在設計一個應用程序並嘗試做一些研究,以瞭解它應該如何工作以及我可以使用的任何提示等。關於Web服務消耗另一個Web服務的建議

我需要開發一箇中間件的Web服務在Tomcat運行6

客戶端程序會消耗我的web服務。

我的Webservice需要根據來自客戶端的信息輪流執行多次搜索。這些搜索正在使用第三方網絡服務。第三方提供Java存根類。

可以/我應該寫我的Web服務是多線程的,因此每個線程都被創建並用於搜索和結果整理並返回給客戶端?

搜索可能需要一段時間才能完成約200-500ms

所有的建議是感激地接受,

回答

0

我有點不確定你的需求究竟是什麼。搜索是否可以並行運行?如果是這種情況,使用多線程來執行它們可能不是一個好主意。

在我正在處理的應用程序中有類似的東西 - 長時間運行的搜索運行在單獨的線程中,以便其他處理可以繼續,然後在結束時將結果發送回客戶端。

沒有問題,我們運行在Tomcat 6上,它工作正常。顯然,多線程通常會引起注意,我們使用Java 6 java.util.concurrent庫,這非常有用。

0

有幾個後端查詢並行運行似乎有潛在的好處,所以某種多線程似乎是個好主意。

有跡象表明發生了我幾個問題:

  1. 線程在Java EE容器直接產卵一般不recomended - 的Java EE容器,如要在該控件 - 所以有專門支持的API用於在Java EE世界中實現此功能(有關此主題的更多信息,請參閱this answer)。我不知道Tomcat現在是否支持這些API,如果不支持,那麼like this可能有效。
  2. 你需要一個好的策略來處理破碎和緩慢的反應。假設你有8個答案中有7個,第8個似乎需要很長時間才能給出一個快速的部分答案。最好先考慮一下。
  3. 哪種方式導致採用某種「通知」方式會更好,發送請求,稍後回來收集臨時結果,稍後再回來收集更完整的結果。
  4. 某些後端系統可能會對來自同一來源的過多請求做出嚴重反應。您可能需要限制請求頻率既「交際」又避免任何黑名單策略。