我們在Weblogic服務器上部署了一個SOAP webservice,流程如下。使用Executor框架在Weblogic SOAP Webservice中創建後臺線程
SOAP客戶端將發送消息到Webservice,驗證消息併發送確認作爲服務的響應。但是,假設在後臺執行SocketConnection以異步進一步處理消息。
已經提供的實現是使用ExecutorService.newFixedThreadPool
在後臺產生一個ChildThread。這是正在使用的代碼(並非所有webservice實現文件的代碼都在此處發佈)。
if ("103".equals(requestType)) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MessageProcessing103(coreMsg, otherDetails));
} else if ("104".requestType) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MessageProcessing104(coreMsg, otherDetails));
}
對於上述實現可伸縮性絕對是一個問題,但我們可以像現在一樣適應它。你可以幫助下面的查詢雖然
- 由於後臺線程很長生活是否意味着相同的衍生線程將用於執行所有請求?
- 如果兩個請求以幾秒鐘的時間間隔進入,第二個請求是處於等待狀態還是會產生新線程?
- 我們並沒有關閉執行者,那麼在這種情況下遇到的問題是什麼?
感謝您的輸入。基於上面的第三點,我計劃擁有一個固定線程池的最終ExecuteService對象,如下所示。 「私有靜態最後的ExecutorService EXECUTESERVICE = Executors.newFixedThreadPool(3); '這會好嗎?另外我讀的Executor線程不關機服務器停止?如何以編程方式終止這些線程?此代碼位於我的Web服務實現文件中。 – Saurav
到shouldown執行線程的服務器停止,讓他們守護線程,如http://stackoverflow.com/questions/1516172/executor-and-daemon-in-java/1517264#1517264 –