[英]Java EE transaction behavior when WS client times out
我已經發布了使用Java EE和JAX-WS綁定到HTTP傳輸的同步SOAP Web服務。 如果Web服務使用者在服務方法返回之前超時,那么Java EE規范是否要求JTA事務回滾?
從服務方法返回之前,我強制客戶端超時了70秒的睡眠,這導致java.net.SocketTimeoutException: Read timed out
SoapUI上的java.net.SocketTimeoutException: Read timed out
異常。 返回后,Web服務事務確實回滾了。
Java EE規范是否要求這種行為,並要求客戶端TCP確認提交事務? 如果是這樣,確切的協議是什么? 還是這不是SoapUI的特定情況,並非適用於所有客戶端?
為了澄清起見,我正在嘗試模擬一個場景,其中服務響應期間的網絡延遲或故障導致客戶端超時。
事務與超時無關。 要提交的事務的授權是bean方法是否正常返回。 如果它由於內部錯誤或超時異常而異常返回,則該事務將被回滾。
您可以通過將異常包裝在標有@ApplicationException(rollback = false)
的業務異常中來避免回滾
https://docs.oracle.com/javaee/6/api/javax/ejb/ApplicationException.html
您的要求無法真正完成。 或者您嘗試異步調用。 或者,您可以提供另一項服務,客戶可以通過該服務詢問交易是否成功。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.