單例(Singleton)Bean


Singleton
  1. 是一種新型的Session Bean
  2. 同樣俱備執行緒安全
  3. 提供一個額外的保證:每個JVM上的Bean只會被創建一次。
    1. 該特性在很多地方都有用武之地,比如說快取(Cache)。
    2. 保證每個資源只有一個共享 View 存在,而應用服務器並沒有提供該特性。
    3. 無需持久化的有價值的資料可以通過簡單存儲實現,因為重新創建的代價可能會很大。
  4. 設計 Singleton 的目的就是用於共時同作的存取。規範賦予了開發者複雜的控制手段來解決共時同作的存取問題。
    1. 我們可以通過容器以聲明的方式指定某種訪問類型,該行為是預設的;可以通過註釋型別@javax.ejb.ConcurrencyManagement(CONTAINER) 顯式指定使用容器管理的共時同作手段。





如果想對Bean進行更多的控制,請使用@javax.ejb.ConcurrencyManagement(BEAN)。憑藉容器管理的並發手段,我們 可以在方法或類層次上指定訪問類型。可以在默認情況下於類層次上使用@javax.ejb.Lock(WRITE)註解以保證所有的業務方法都是可序列化 的,然後針對特定的「只讀」方法再進行優化,這麼做不會產生任何的副作用。對於只讀方法需要使用註解@Lock(READ)。對於 @Lock(WRITE)註解所修飾方法的所有訪問都是可序列化的,同時會阻塞客戶端的訪問直到前一個訪問完成,或是出現超時的情況。可以通過 @AccessTimeout註解指定超時的時間,該註解需要一個java.util.concurrent.TimeUnit值。現在我們可以使用這種 並發控制了,先刪除之前的ChatRoom實現代碼。
Comments