Java EE 6新特性嘗鮮:EJB 3.1重要變化總覽
譯文【51CTO精選譯文】EJB 3.1規(guī)范的主要目標(biāo)是使EJB盡可能簡(jiǎn)單,其核心思想是簡(jiǎn)化EJB架構(gòu)同時(shí)引入新的功能,EJB 3.1中一些重要的變化包括:
51CTO編輯推薦:Java EE 6遙遙無(wú)期 預(yù)覽版兩極分化
移除了本地事務(wù)接口:EJB 3.0移除了復(fù)雜的本地和遠(yuǎn)程接口,為簡(jiǎn)單舊式Java接口(plain old Java interface,POJI)開(kāi)路,EJB 3.1更進(jìn)了一步,事務(wù)接口也不用再?gòu)?qiáng)制遵循了,類似于POJO,如JPA中的實(shí)體和消息驅(qū)動(dòng)Beans,在Java EE 6中,開(kāi)發(fā)者可以不用事務(wù)接口編寫(xiě)會(huì)話Beans了:
- @Stateless
- public class StockQuoteBean {
- public double getStockPrice(String symbol) {
- ...
- }
- }
引入了Singleton Beans:引入Singleton beans概念主要是為了共享應(yīng)用數(shù)據(jù)和支持一致性訪問(wèn),當(dāng)一個(gè)Bean被標(biāo)記為Singleton時(shí),在整個(gè)應(yīng)用層容器只能保證每個(gè)JVM共享一個(gè)實(shí)例,對(duì)于緩存這一規(guī)定是行之有效的,Singleton beans和其它EJB一樣,它們是開(kāi)發(fā)人員可以通過(guò)注解將它們標(biāo)記為Singleton beans的POJO。
默認(rèn)情況下,所有Singleton beans都是事務(wù)性和線程安全的,具有靈活的并發(fā)性選項(xiàng),Java EE 6也引入了并發(fā)性注解在getter和setter函數(shù)上執(zhí)行鎖定的讀/寫(xiě)操作。
- @Singleton
- @Startup
- public class CounterBean {
- private int count;
- @PostConstruct
- public void initialize() {
- count=5;
- }
- }
直接用WAR文件打包EJB組件:EJB 3.1中一個(gè)重要的改進(jìn)是可以直接將EJB組建打包到WAR文件中,不用再獨(dú)立創(chuàng)建jar文件了,EJB 3.1為Web應(yīng)用程序提供了一個(gè)簡(jiǎn)化的打包機(jī)制,圖1顯示了EJB 3.1以前的打包方式。
圖 1 EJB 3.1之前的打包方式(EJB 3.0打包結(jié)構(gòu))
使用EJB 3.1后,開(kāi)發(fā)人員可以直接將classes目錄下的EJB和servlets一起打包到WAR文件中,圖2顯示了EJB 3.1的打包方式。
圖 2 EJB 3.1打包方式結(jié)構(gòu)圖
在Java SE環(huán)境中嵌入API執(zhí)行EJB:這個(gè)特性背后的思想是允許EJB在Java SE環(huán)境中運(yùn)行,即客戶端和EJB在相同的JVM中運(yùn)行,為了運(yùn)行EJB,Java EE 6提供了一個(gè)嵌入式EJB容器,使用JNDI進(jìn)行檢查,這為測(cè)試,批處理過(guò)程和在桌面應(yīng)用程序中使用EJB提供了便利,嵌入式EJB容器提供了一個(gè)管理EJB的環(huán)境,這個(gè)環(huán)境支持有限的服務(wù),javax.ejb.EJBContainer類表示一個(gè)嵌入式容器。
異步會(huì)話Beans:一個(gè)支持異步函數(shù)調(diào)用的會(huì)話Bean,使用@Asynchronous注解的Bean函數(shù)是異步調(diào)用的,在EJB 3.1之前,在會(huì)話Bean上的任何函數(shù)調(diào)用都是同步的。異步函數(shù)可以返回一個(gè)java.util.concurrent API的Future
EJB Lite:許多企業(yè)級(jí)應(yīng)用不需要EJB完整的功能,因此在EJB 3.1中引入了EJB Lite,它是EJB API的一個(gè)子集,EJB Lite包括了創(chuàng)建一個(gè)企業(yè)級(jí)應(yīng)用的所有功能,但不包括專業(yè)的API。EJB Lite提供了廠家選項(xiàng),讓廠家可以在它們自己的產(chǎn)品中實(shí)施EJB API的子集,使用EJB Lite創(chuàng)建應(yīng)用程序可以部署到任何支持EJB的服務(wù)器上,不管它是完整的EJB還是EJB Lite,嵌入式容器也支持EJB Lite,EJB Lite有以下EJB API子集:
◆會(huì)話Bean組件(Stateless,stateful和singleton會(huì)話Bean)
◆只支持同步調(diào)用
◆容器管理和Bean管理事務(wù)
◆聲明和編程安全
◆截取器
◆支持部署描述信息(ejb-jar.xml)
圖3中顯示的EJB Lite支持的功能在完整的EJB中也全部支持。
圖 3 EJB 3.1 Lite和EJB 3.1完整版支持的功能對(duì)比
原文:New Features in Java EE 6
作者:Sangeetha S.
【編輯推薦】