簡體   English   中英

WS客戶端超時時的Java EE事務行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM