EJB3.1增加了Singleton Beans的概念
EJB在Java EE就已經(jīng)經(jīng)歷過了非常大的改動。也許看似不可能,但實際上 EJB3.1還是在社區(qū)中廣泛得到認(rèn)可,并且采納它的人也在不斷增長。而這一切也許是因為我們過度的認(rèn)為需要怎么怎么簡化 Java EE才取得這樣的成績。比如說,對 JBoss Seam 的興趣和 GlassFish 的熱情都是重要的關(guān)鍵因素。 EJB3.1 的目標(biāo)就是在增加業(yè)務(wù)組件時,繼續(xù)讓 EJB 變得盡可能簡單。下面是對 EJB3.1 特性的高度概括:
原本需要甚至實現(xiàn) Session Beans 的業(yè)務(wù)接口變得可選了,不再強迫要求實現(xiàn)。在使用 Session Beans+JSF+WebBeans 的場景下尤其有用。
EJB3.1 增加了 Singleton Beans 的概念。因為人們更傾向于管理共享的應(yīng)用程序狀態(tài),需要保證是完全線程安全的模型。此外, EJB3.1 新增的聲明式的并發(fā)控制也更加靈活。
EJB3.1 一個可圈可點的的強大特性就是支持 cron 風(fēng)格的 scheduling .除目前基于 timer API 的調(diào)度計時器外,聲明式和編程式的 cron 風(fēng)格的 scheduling API 也加入了進來。
另一個強大的特性就是可以通過使用 @Asynchronous 標(biāo)注來對 Session Bean 的方法進行異步調(diào)用。你甚至還通過它來控制異步 EJB 方法從而返回一個 java.util.concurrent.Future 對象。
EJB3.1 Lite 概念的逐漸引入形成了一個 EJB API 的子集,并在 Web Profile 中得到應(yīng)用。只不過 EJB Lite 包含了像事務(wù)處理和安全這樣的特性,而那些消息機制,遠程調(diào)用以及 scheduling 等非必須的自然沒有必要加入其中。除上述列表所述特性外,
EJB3.1 的特性還包括:直接將 EJB 打包成 war 文件,可運行在 embedded 的容器中便于 Java SE 環(huán)境進行 JUnit 測試,使用統(tǒng)一的標(biāo)準(zhǔn)化全局 JNDI 命名方式.
【編輯推薦】