日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EJB的超时策略:它们如何提供帮助?

發布時間:2023/12/3 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EJB的超时策略:它们如何提供帮助? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

EJB 3.1在其API中引入了與超時相關的注釋。

  • @AccessTimeout
  • @StatefulTimeout

讓我們快速看一下它們是什么以及它們為什么重要

@AccessTimeout

指定一個排隊請求(等待另一個線程完成)超時的時間段。

當您的會話bean實例被并發請求轟炸時,EJB容器通過序列化這些調用(即阻塞其他線程直到當前線程完成執行)來確保完整性。 您可以使用此批注進一步完善此行為。

哪些bean可以利用此注釋?

這適用于

  • 有狀態的 (@Stateful)bean和
  • 配置了容器管理的并發選項(ConcurrencyManagementType.CONTAINER)的Singleton bean(@Singleton)

它為什么如此重要 ?

由于EJB容器對并發請求進行了序列化,因此具有此批注可確保不會永遠阻止潛在的(等待)線程,并有助于定義并發策略 。

我可以在哪里放置此注釋?

  • 在類上–全局適用于所有方法
  • 僅在特定方法上
  • 在特定方法上覆蓋類級別注釋的設置

如何使用它 ?

您可以使用此批注的value和unit元素定義其行為

這里有一些選擇

  • @AccessTimeout(0) –這意味著您的方法根本不支持并發訪問,并且客戶端最終將收到java.ejb.ConcurrentAccessException
  • @AccessTimeout(-1) –您的方法將無限期阻塞(我不認為這是個好主意!)
  • @AccessTimeout(5000) –如果有機會,方法將在隊列中的下一個線程(如果有)之前等待5000 ms(5秒)

幾件事要注意

  • unit元素的默認值為java.util.concurrent.TimeUnit.MILLISECONDS
  • 小于-1的超時值無效

@StatefulTimeout

定義驅逐空閑的有狀態會話Bean的閾值限制,即在特定時間間隔內未接收到客戶端請求的那些

它為什么如此重要 ?

假設您有一個有狀態的會話bean處理用戶注冊工作流程。 用戶在特定時間間隔內處于非活動狀態(可能正在執行其他操作)。 您希望狀態會話Bean在內存中活動多長時間? 配置此注釋可以幫助防止不活動的Bean實例占用主內存。

我可以在哪里放置此注釋?

與@AccessTimeout批注相同的規則!

如何使用它 ?

您可以使用此批注的value和unit元素定義其行為

這里有一些選擇

  • @StatefulTimeout(0) –這意味著您的bean實例將在包含此批注的方法完成后立即刪除
  • @StatefulTimeout(-1) –您的方法對超時不敏感(固執的人!)
  • @StatefulTimeout(15000) –方法將等待15000毫秒(15秒)以用于客戶端請求,然后該方法將成為驅逐對象

幾件事要注意

  • unit元素的默認值為java.util.concurrent.TimeUnit.MILLISECONDS
  • 小于-1的超時值無效

干杯!

翻譯自: https://www.javacodegeeks.com/2015/04/timeout-policies-for-ejbs-how-do-they-help.html

總結

以上是生活随笔為你收集整理的EJB的超时策略:它们如何提供帮助?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。