EJB-02:EJB开发流程
一、開發EJB的步驟
第一大步:開發編譯業務接口和Bean類
(1) 編寫業務接口和Bean類
(2) 編譯
第二大步:打包部署到JNDI服務器
(3) 提供部署描述文件
(4) 打包(編譯后的字節碼文件和部署描述文件)成ejb-jar
(5) 部署ejb-jar到容器
第三大步:測試
(6) 檢測部署是否成功(看容器是否發現)
(7) 識別客戶端程序來調用EJB
業務接口(Business Interface):
(1) 對客戶端暴露可以調用的方法,它是一個普通的Java接口,POJO類,或POJI。
(2) 業務接口可以劃分為兩類:A、遠程業務接口
?????? ???????B、本地業務接口
如果客戶端和EJB運行在同一個JVM中,我們應該用本地接口,否則只能用遠程業務接口。
二、EJB的編程模型和編程涉及的標注
Bean類(The Bean Class):
(1) Bean類也是一個POJO,實現了業務接口中的方法
(2) 在Bean類中一般帶有標注(Annotation),用于代替傳統的部署描述文件
?@stateless 無狀態(標注該類是一個無狀態的會話Bean)
?@Remote(XXX.class)(標注該Bean類的業務接口是XXX.class)
(3) Bean類要有缺省的構造方法
(4) Bean類可以不實現業務接口(因為標注已經說明),不過建議實現
(5) ejb-jar.xml(Optional)標準的部署描述文件
? 我們可以用EJB3.0中的標注來代替對描述文件的編寫。
EJB3.0使用了JAVA SE 5.0 中的注釋新特性,只要在方法上寫EJB規范的注釋,就可以不用來寫標準的部署表述,ejb-jar.xml這個要放到jar文件的mate-inf文件夾里。
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar? ?xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??metadata-complete="true" version="3.0" ??xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/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不能夠被客戶端直接訪問,客戶端必須通過業務接口來調用EJB
? (2) EJB客戶端分為兩類:
??? A、EJB客戶端與EJB運行在同一個容器中→本地業務接口
??? B、EJB客戶端與EJB運行在不同的JVM中→遠程業務接口
?
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、配置系統的JNDI的環境(客戶端所依賴的Object和Sun運行環境)
3、寫測試類,注意在測試類中也要有業務接口
? Step1:設置JNDI服務器入口信息( system.setProperty)
? Step2:初始化上下文
? Step3:查找JNDI服務器的Stub
? Step4:調用對象
EJB調用過程:
? (1) EJB容器將Stub綁定到JNDI服務器上,JNDI上使用的綁定(默認情況下)是遠程業務接口的全限定名。
? (2) 客戶端通過上下文(Context)的方法來查找JNDI服務器上綁定的Stub。
?
在廠商的部署描述中可以配置EJB的實例池,可以一次創建多個EJB的實例。
注意:EJB一定要先部署到服務器,EJB需要部署環境才能運行
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還要引入已經編譯好的EJB的jar文件。
總結
以上是生活随笔為你收集整理的EJB-02:EJB开发流程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络术语还在困扰你吗?
- 下一篇: 张量基本知识