【51CTO精選譯文】EJB(Enterprise JavaBeans)是使用Java EE開發和部署業務應用系統的服務端組件架構,使用EJB編寫的應用系統是可擴展的、事務型和安全的。EJB 3.0是Java EE 5平台的一部分,相對前面的版本,它更加易於使用,它的最新版本 — JSR318:EJB 3.1 — 隨Java EE 6發布,進一步簡化了使用,並提供了許多反應常見使用模式的改進,如:
1、無接口視圖:允許你指定一個企業Bean,只使用Bean類,不用編寫獨立的業務接口。
2、單元素集合:讓你在一個企業Bean組件的多個實例間輕松地共享狀態,或是在一個應用程序的多個企業Bean組件之間共享狀態。
3、異步會話Bean調用:通過指定一個注解,讓你可以異步調用會話狀態方法。
4、簡化打包:消除了企業Bean類必須打包到ejb-jar文件的限制,現在你可以直接將EJB類放到WAR文件中。
5、輕量級EJB:它是EJB 3.1的子集,包括大量的Java EE profiles。
無接口視圖
EJB 3.1通過讓本地業務接口成為可選組件簡化了這個方法,沒有本地業務接口的Bean暴露的是無接口視圖,現在你不用編寫獨立的業務接口就可以獲得相同的企業Bean功能。
無接口視圖與EJB 3.0中的本地視圖具有相同的行為,例如,它支持如通過按引用調用語義、事務和安全傳播等特性,但無接口視圖不需要單獨的接口,即Bean類所有的公共方法自動暴露給調用者。默認情況下,任何有空implements子句,且沒有定義任何其它本地或遠程客戶端視圖的會話Bean,暴露的是一個無接口視圖。下面的會話Bean暴露了一個無接口視圖:
- @Stateless
- public class HelloBean {
- public String sayHello() {
- String message = propertIEsBean.getProperty("hello.message");
- return message;
- }
- }
使用本地視圖時,無接口視圖的客戶端總是獲得一個EJB引用 — 通過注入或JNDI查找,唯一的不同之處是EJB引用的Java類型是Bean類類型,而不是本地接口的類型,如下面的Bean客戶端:
- @EJB
- private HelloBean helloBean;
- ...
- String msg = helloBean.sayHello();
注意,雖然這裡沒有接口,客戶端不能使用new()明確地實例化Bean類,那是因為所有Bean調用都是通過一個特殊的EJB引用,或由容器提供的代理實現的,這樣就允許容器提供其它的Bean服務,如池、容器管理的事務,並發管理等。