單元素集合
單元素集合Bean也被稱為單元素集合,它是一種新的會話Bean,它保證在一個特定的Java虛擬機(JVM)應用程序中只被實例化一次。使用單元素集合,你可以在一個企業Bean組件的多個實例之間輕松地共享狀態,也可以在一個應用程序的多個企業Bean之間共享狀態,它就象為某個應用程序緩存數據的類一樣。你可以以單元素集合形式定義類,這樣可以確保在應用程序內只有一個緩存實例,一個共享狀態。
使用@Singleton注解定義單元素集合,如:
- @Singleton
- public class PropertIEsBean {
- private PropertIEs props;
- public String getProperty(String name) { ... }
- @PostConstruct
- public void initialize { // props = ...}
- }
因為它只是另一種會話Bean,單元素集合可以定義相同的本地和遠程客戶端視圖,可以象無狀態的和有狀態的Bean那樣,客戶端以訪問無狀態和有狀態Bean相同的方式訪問單元素集合,即通過EJB引用。例如,下面是一個可以訪問PropertIEsBean單元素集合的客戶端示例:
- @EJB
- private PropertIEsBean propsBean;
- ...
- String msg = propsBean.getProperty("hello.message");
在這裡,容器確保所有通過PropertiesBean引用的調用是由相同的PropertIEsBean實例提供的服務,默認情況下,容器強制執行和其它組件類型相同的線程保證,換句話說,單元素集合是全線程安全的,特別值得一提的是,在任一時刻,允許多個調用訪問一個特定的Bean實例,默認情況下,單元素集合會阻塞所有並發調用,但還有其它並發選項允許更高效地訪問單元素集合實例。