生活随笔
收集整理的這篇文章主要介紹了
EJB3概述
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、EJB技術(shù)概述
- Java之所以受到企業(yè)級應(yīng)用的青睞,很大程度上不僅是因為其在Web領(lǐng)域的成功,
?? ?更多的是因為Java EE的規(guī)范中明確規(guī)定了一個清晰的軟件分層,
?? ?將業(yè)務(wù)邏輯分離于表現(xiàn)層,而EJB就是這樣的位置。 - 什么是EJB
?? ?EJB是用于構(gòu)建企業(yè)應(yīng)用程序模塊托管的、服務(wù)器端組件架構(gòu)。EJB技術(shù)加速
?? ??? ?并簡化了開發(fā)基于Java技術(shù)的分布式、事務(wù)性、安全和便攜的應(yīng)用程序。 - EJB類型
?? ?EJB的類型有兩種:會話Bean(Session Bean)和
?? ??? ?消息驅(qū)動Bean(Message Driven Bean)。
?? ??? ?其中會話Bean又分為有狀態(tài)的會話Bean(Stateful Session Bean)
?? ??? ?和無狀態(tài)的會話Bean(Stateless Session Bean)。
?? ?會話Bean:是供客戶(Client)端調(diào)用的Bean,
?? ??? ?會話Bean通常封裝了常用的業(yè)務(wù)邏輯,是最常用的Bean。
?? ??? ?有狀態(tài)的會話Bean可以保存客戶端的狀態(tài),能夠跟蹤客戶端;
?? ??? ?無狀態(tài)的會話Bean不能保存客戶端的狀態(tài);一次會話結(jié)束,會話Bean就結(jié)束了。
?? ?消息驅(qū)動Bean:可供客戶端調(diào)用的異步方法,通常封裝了發(fā)送消息相關(guān)的業(yè)務(wù)邏輯。
二、下載和安裝JBoss服務(wù)器
- 下載JBoss
?? ?下載、解壓 - JBoss的目錄結(jié)構(gòu)
?? ?JBoss解壓縮后的根目錄下有bin、client、docs、server和lib等文件目錄。 - MyEclipse中配置JBoss
?? ?1、配置服務(wù)器
?? ?2、配置JDK
?? ?3、配置啟動模式 - 啟動JBoss服務(wù)器
?? ?選擇Start選項啟動JBoss
三、實例:HelloEJBService
- 新建EJB工程
?? ?1、選擇菜單中的File | New | EJB Project命令,
?? ??? ?彈出New EJB Project對話框。
?? ?2、輸入項目名稱,同時選擇項目為Java EE 5.0,
?? ??? ?單擊Finish按鈕,這樣就創(chuàng)建了一個EJB項目。 - 定義EJB業(yè)務(wù)接口
?? ?開發(fā)一個SessionBean通常要定義兩個類:一個是服務(wù)接口,
?? ??? ?它聲明為Remote或者是Local的。另一個是實現(xiàn)這個遠(yuǎn)程接口的Bean,
?? ??? ?它可以被聲明成Stateful或Stateless。
?? ?EJB的業(yè)務(wù)接口由以下兩部分組成:
?? ??? ?普通的Java接口。
?? ??? ?標(biāo)注調(diào)用接口的方式,本地調(diào)用@Local或者遠(yuǎn)程調(diào)用@Remote。 - 編寫SessionBean
?? ?定義了遠(yuǎn)程的服務(wù)接口,之后需要開發(fā)無狀態(tài)的會話Bean也需要兩個要素:
?? ??? ?實現(xiàn)定義的業(yè)務(wù)接口。
?? ??? ?使用注釋@Stateless,將Bean標(biāo)注成為無狀態(tài)的會話Bean。 - EJB的部署
?? ?將EJB部署到JBoss容器中的步驟如下:
?? ?1、在項目上右擊,在彈出的快捷菜單中選擇MyEclipse |?
?? ??? ?Add and Remove Project Deployments命令。
?? ?2、或者也可以單擊工具欄中的部署按鈕,也會打開部署項目的對話框。
?? ??? ?然后在對話框中選擇Add按鈕,在彈出的對話框中
?? ??? ?選擇所要部署的JBoss服務(wù)器,單擊Finish按鈕。
?? ??? ?部署時,可以選擇部署為Explored Archive解壓包和Packaged Archive
?? ??? ??? ?壓縮包兩種方式,兩種方式的區(qū)別如下:
?? ??? ??? ?Explored Archive:可以支持熱部署,也就是說當(dāng)代碼改變后,
?? ??? ??? ??? ?不用重新啟動JBoss便可以運行最新的程序,這種方式適合在
?? ??? ??? ??? ?開發(fā)階段部署使用,建議采用這種方式。
?? ??? ??? ?Packaged Archive:不支持熱部署,改變代碼后,需要重新啟動
?? ??? ??? ??? ?JBoss。這種方式適用于產(chǎn)品發(fā)版后,運行適用。
?? ?3、部署完成EJB后,將會在JBoss的安裝目錄
?? ??? ?E:\server、jboss-5.0.0.Beta4\server\default\deploy下
?? ??? ?新建xxx.jar的文件夾,這個EJB Jar包便是剛才部署的EJB。
?? ?4、啟動JBoss服務(wù)器,在啟動時JBoss會自動加載EJB。
四、運行EJB
- 客戶端調(diào)用EJB
?? ?客戶端調(diào)用EJB時需要注意以下幾個問題:
?? ?1、要想獲得指定的EJB組件,首先要初始化context上下文對象,
?? ??? ?使用JBoss服務(wù)器,所以初始化Context要使用JBoss的實現(xiàn)。
?? ??? ?protected static Context getInitialContext() {
?? ??? ??? ?if (context == null) {
?? ??? ??? ??? ?Hashtable props = new Hashtable();
?? ??? ??? ??? ?props.put(Context.INITIAL_CONTEXT_FACTORY,
?? ??? ??? ??? ??? ?"org.jnp.interfaces.NamingContextFactory");
?? ??? ??? ??? ?props.put(Context.URL_PKG_PREFIXES,
?? ??? ??? ??? ??? ?"org.jboss.naming:org.jnp.interfaces");
?? ??? ??? ??? ?props.put(Context.PROVIDER_URL,?
?? ??? ??? ??? ??? ?"jnp://localhost:1099");
?? ??? ??? ??? ?context = new InitialContext(props);
?? ??? ??? ?}
?? ??? ??? ?return context;
?? ??? ?}
?? ?2、EJB的服務(wù)接口需要通過Context對象的lookup方法來查找,
?? ??? ?其中參數(shù)的組成為:
?? ??? ?EJB-JAR包中EJB的獲取:EJB服務(wù)名/接口類型(remote/local)。
?? ??? ?EAR包中EJB的獲取:EAR包名/EJB服務(wù)名/接口類型(remote/local)。
?? ??? ??? ?Context ctx = getInitialContext();
?? ??? ??? ?Ojbect object = ctx.lookup("HelloEJBService/remote");
?? ?3、運行客戶端程序需要將JBoss的客戶端類庫導(dǎo)入到運行環(huán)境中,該類庫
?? ??? ?位于E:\server\jboss-5.0.0.Beta4\client\jbossall-client.jar下。 - Web應(yīng)用調(diào)用EJB
?? ?@EJB
?? ?IHelloEJBService service;
?? ?service.sayHelloEJB("Web Client");
五、EJB其他的相關(guān)技術(shù)規(guī)范
- MessageBean(消息Bean):
?? ?也叫做消息驅(qū)動Bean,是基于Java消息服務(wù)(JMS)技術(shù)的,它能夠異步地
?? ??? ?發(fā)送消息執(zhí)行業(yè)務(wù)邏輯,常用的應(yīng)用比如驅(qū)動工作流程等。 - EntityBean(實體Bean):
?? ?是持久層的業(yè)務(wù)組件,在EJB3.0以后,被單獨分離出來成為
?? ??? ?JPA(Java Persistence API),是一種ORM的規(guī)范。 - 事務(wù)管理(Transaction):
?? ?事務(wù)管理是EJB中很重要的內(nèi)容,它能夠保證業(yè)務(wù)邏輯的完整性。
?? ??? ?事務(wù)管理是對一系列操作的管理,它最終只有兩個結(jié)果,
?? ??? ?要么成功,要么失敗。一旦失敗,所有的操作將回滾到初始狀態(tài)。
?? ??? ?一旦成功,才最終提交,最終持久化。 - EJB安全(Security):
?? ?對于任何系統(tǒng)來說,安全都是需要值得考慮的問題,EJB當(dāng)然也不例外。
?? ??? ?EJB中針對安全方面有專門的API,
?? ??? ?能夠幫助EJB快速地建立安全的運行環(huán)境。 - AOP在EJB中的而應(yīng)用--攔截器(Interceptor):
?? ?AOP攔截器是EJB3.0以后的功能,它能夠在調(diào)用EJB之前對EJB進(jìn)行攔截,
?? ?可以方便地對訪問進(jìn)行控制。 - 定時服務(wù)(Timer Service):
?? ?定時服務(wù)是EJB中類似定時器的服務(wù),它能夠定時地觸發(fā)業(yè)務(wù)邏輯,
?? ??? ?簡化了后臺需要周期性執(zhí)行的業(yè)務(wù)的開發(fā)。 - Web服務(wù)(Web Service):
?? ?Web服務(wù)是目前各大公司倡導(dǎo)的業(yè)務(wù)理念,EJB也不例外。
?? ??? ?在EJB3.0規(guī)范中,將EJB發(fā)布成Web服務(wù)更加容易和方便。
總結(jié)
以上是生活随笔為你收集整理的EJB3概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。