2
A
回答
5
現在,當EJB超時的事務,會導致無限循環線程中斷或容器將停止運行infinte循環的線程。
這個答案是基於我執行了幾年前在OC4J 10.3.x中時,WebSphere 6.x中和WebLogic 10.x的,並可能適用於其他容器以類似的方式反向工程。至於我記得,事務超時檢測是在不同的容器不同的方式實現,但它們都採用規定某些共同原則如下:
- 事務超時檢測通常是在由容器管理不同的線程執行。相關線程會休眠指定的時間(通常爲1秒),然後喚醒並遍歷所有正在進行的事務。如果任何事務超出了指定的超時時間(通常在各種級別 - JTA容器,EJB等),那麼線程將標記事務進行回滾。不會嘗試向執行事務的線程發出有關事務狀態的信號。
- 當執行事務的線程嘗試與JTA協調器或事務資源(
XAResource
實例)進行交互以執行一些工作(例如,發出SQL查詢)時,容器將確定該事務具有被標記爲回滾,並且會拋出TransactionRolledBackException
。
根據以上所述,可以推斷,除非拋出TransactionRolledBackException
,否則無限循環將永不會被破壞。換句話說,只有在循環內嘗試事務性活動時,循環纔會被破壞;如果沒有這樣的活動被執行,那麼循環將保留它的屬性來無限地執行。
請注意,WebLogic等特定容器允許檢測「卡住」線程。這意味着這樣的容器能夠檢測線程是否在配置的持續時間之外延長了一段時間。這並不意味着當容器檢測到卡住時容器將終止或中斷該線程。
1
不,一般來說容器不可能自動檢測到無限循環。某些應用程序服務器可能會檢測到事務已超時或EJB已長時間處於活動狀態。
相關問題
- 1. EJB - 事務超時
- 2. EJB CMT和事務超時
- 3. EJB JTA/JPA CMT事務回滾影響子事務
- 4. 超線程如何影響並行化?
- 5. SSO對會話超時的影響
- 6. mysqldump對單事務參數的影響
- 7. 休眠事務對內存的影響
- 8. 超線程對編譯器性能的影響?
- 9. WCF事務中SQL事務的影響
- 10. IsBackground對.Net線程的影響?
- 11. Linux:信號對多線程的影響
- 12. 受Thread.yield()影響的線程?
- 13. AsynchronousByteChannel的線程影響
- 14. 的Jboss 7.1 EJB 2.1的定製事務超時配置
- 15. 線程拋出RuntimeException - 對線程池的影響
- 16. 雙擊超鏈接 - 對HTTP的影響
- 17. EJB提交的Web服務超時
- 18. JMS會話線程影響
- 19. 事務超時
- 20. EJB JPA事務
- 21. EJB事務
- 22. EJB事務REQUIRE_NEW
- 23. EJB事務
- 24. Firebase中嵌套事務的影響?
- 25. 火災事件不會影響ZK會話超時
- 26. EJB作爲Web服務 - 會話超時
- 27. 執行程序服務 - 線程超時
- 28. 進程退出和對線程的影響
- 29. SQL事務超時
- 30. Hybris事務超時