Chapter02 EJB開發(fā)流程一,、開發(fā)EJB的步驟 第一大步:開發(fā)編譯業(yè)務接口和Bean類 (1) 編寫業(yè)務接口和Bean類 (2) 編譯 第二大步:打包部署到JNDI服務器 (3) 提供部署描述文件 (4) 打包(編譯后的字節(jié)碼文件和部署描述文件)成ejb-jar (5) 部署ejb-jar到容器 第三大步:測試 (6) 檢測部署是否成功(看容器是否發(fā)現(xiàn)) (7) 識別客戶端程序來調(diào)用EJB 業(yè)務接口(Business Interface): (1) 對客戶端暴露可以調(diào)用的方法,,它是一個普通的Java接口,POJO類,,或POJI,。 (2) 業(yè)務接口可以劃分為兩類:A、遠程業(yè)務接口 B,、本地業(yè)務接口 如果客戶端和EJB運行在同一個JVM中,,我們應該用本地接口,否則只能用遠程業(yè)務接口,。 二,、EJB的編程模型和編程涉及的標注 Bean類(The Bean Class): (1) Bean類也是一個POJO,實現(xiàn)了業(yè)務接口中的方法 (2) 在Bean類中一般帶有標注(Annotation),,用于代替?zhèn)鹘y(tǒng)的部署描述文件 @stateless 無狀態(tài)(標注該類是一個無狀態(tài)的會話Bean) @Remote(XXX.class)(標注該Bean類的業(yè)務接口是XXX.class) (3) Bean類要有缺省的構造方法 (4) Bean類可以不實現(xiàn)業(yè)務接口(因為標注已經(jīng)說明),,不過建議實現(xiàn) (5) ejb-jar.xml(Optional)標準的部署描述文件 我們可以用EJB3.0中的標注來代替對描述文件的編寫。 EJB3.0使用了JAVA SE 5.0 中的注釋新特性,只要在方法上寫EJB規(guī)范的注釋,,就可以不用來寫標準的部署表述,,ejb-jar.xml這個要放到jar文件的mate-inf文件夾里。 <?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java./xml/ns/javaee" xmlns:xsi="http://www./2001/XMLSchema-instance" metadata-complete="true" version="3.0" xsi:schemaLocation="http://java./xml/ns/javaee http://java./xml/ns/javaee/ejb-jar_3_0.xsd"> <enterprise-beans> <session> <display-name>HelloBean</display-name> <ejb-name>HelloBean</ejb-name> <business-remote>test.HelloRemote</business-remote> <ejb-class>test.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> <security-identity> <use-caller-identity/> </security-identity> </session> </enterprise-beans> </ejb-jar> EJB Client(客戶端): (1) EJB不能夠被客戶端直接訪問,,客戶端必須通過業(yè)務接口來調(diào)用EJB (2) EJB客戶端分為兩類: A,、EJB客戶端與EJB運行在同一個容器中→本地業(yè)務接口 B、EJB客戶端與EJB運行在不同的JVM中→遠程業(yè)務接口
EJB 容器(EJB Container): (1) EJB容器是一個運行在JVM上的程序 (2) EJB容器為EJB提供中間件服務,。
EJB客戶端的編程步驟: 1,、運行客戶端前要加上在SUN的服務器文件夾中的lib下的javaee.jar和appserv-rt.jar Tips:Java Runtime相關的包:javaee.jar(Java EE),appserw-rt.jar(Java 運行時) ,,appserv-ws.jar appserv-jwsacc.jar(Web Service) 2、配置系統(tǒng)的JNDI的環(huán)境(客戶端所依賴的Object和Sun運行環(huán)境) 3,、寫測試類,,注意在測試類中也要有業(yè)務接口 Step1:設置JNDI服務器入口信息( system.setProperty) Step2:初始化上下文 Step3:查找JNDI服務器的Stub Step4:調(diào)用對象 EJB調(diào)用過程: (1) EJB容器將Stub綁定到JNDI服務器上,JNDI上使用的綁定(默認情況下)是遠程業(yè)務接口的全限定名,。 (2) 客戶端通過上下文(Context)的方法來查找JNDI服務器上綁定的Stub,。
在廠商的部署描述中可以配置EJB的實例池,可以一次創(chuàng)建多個EJB的實例,。 注意:EJB一定要先部署到服務器,,EJB需要部署環(huán)境才能運行 EJB客戶端 public class Cilent { public static void main(String[] args) throws NamingException {
System.setProperty("jndi.factory","com.sun.jndi.cosnaming.CNCtxFactory"); System.setProperty("jndi.provider.url","corbaloc::localhost:3007/NameSpace"); Context ctx=new InitialContext(); HelloRemote hello=(HelloRemote)ctx.lookup("test.HelloRemote"); System.out.println(hello.hello()); System.out.println(hello.helloword("lichen")); }
}
注意:在寫客戶端時,要引入javaee.jar和appser-rt.jar還要引入已經(jīng)編譯好的EJB的jar文件,。 |
|
來自: lance library > 《EJB》