我在職業生涯中遇到過的一個問題是在分層服務體系結構中,如果一個下游系統進入一個狀態,並且它的所有線程都在死鎖或某種類型的該系統中的無限循環錯誤。在這些情況下,Java EE服務器上的服務器套接字仍在接受和排隊來自客戶端應用程序的請求。這會導致客戶端應用程序使用其所有線程等待來自正確建立的套接字連接的響應。然後,所有用戶都被鎖定在系統外面,因爲他們的請求也在排隊。針對Java EE的長事務時間解決方案?
我想過一些解決方案,但我想知道社區是否有一些更好的解決方案。
下游請求的隔離線程池。這會成爲一個問題,因爲您在系統中混合了空閒線程的數量,從而創建許多需要足夠線程以確保完整吞吐量的小型池。產卵線程意味着你需要自己處理事務和安全上下文。不是真正的受支持的Java EE解決方案。
MDB解決方案是Java EE的首選異步解決方案,但這看起來相當重量級,但具有讓應用服務器處理管理MDB線程池的額外好處。 (目前排在我名單上的第一位)
ESB。這是更重的,並增加了更多的網絡和處理時間。但它允許您設置單個服務超時。還有一個問題,它將需要永遠在一個大公司實施,所以可能不適合我的時間框架。
你們有什麼好點子嗎?
的WorkManager的東西不可用,直到Weblogic的9.我們還在8.1不幸。 – William 2008-11-17 20:50:36