本文通過簡單例子,描述如何利用EJB開發、部署和運行一個客戶機/服務器應用。例子的客戶端作為Java獨立應用運行,由ConverterClient.java類實現。它實現一個簡單的實時會話,主要通過客戶端應用調用服務器端EJB類ConverterEJB.java來實現。
<!-- frame contents -->
<!-- /frame contents -->
假如你已經安裝了J2EE,則可以在doc/guides/ejb/examples/converter目錄中找到這些例子。
為了實現本文所描述的簡單例子,你需要完成以下任務:
·編寫和編譯EJB程序
·創建J2EE應用
·打包EJB(.jar)
·部署J2EE應用
·編寫和編譯客戶端程序
·運行客戶端
下面章節我們將就上述工作任務以及所涉及的知識點進行簡單闡述。
前提
實現本文提供例子的前提是您安裝了Javasoft.com或相關操作系統廠商網站下載的J2SE SDK,以及安裝了相應操作系統版本的J2EE SDK(www.javasoft.com下載)並進行了正確配置。關於J2SE和J2EE的安裝、配置和其它進一步信息,請參閱產品相關文檔。
EJB編碼
每個EJB程序必須要求編寫下述代碼:
·遠程接口(Remote interface )
·本地接口(Home interface )
·實現組件(Enterprise bean class )
遠程接口編碼
遠程接口定義了客戶端能夠調用的商業方法,這些商業方法是有服務器端的企業組件實現的,本文所涉及的Converter.java編碼如下:
import javax.ejb.EJBObject;//引入必須的包
import java.rmi.RemoteException;
public interface Converter extends EJBObject {//必須繼續EJBObject類
/*定義客戶端可以調用的方法*/
public double dollarToYen(double dollars) throws RemoteException;
public double yenToEuro(double yen) throws RemoteException;
}
本地接口編碼
本地接口定義了員徐客戶端創建、查找或移動EJB的方法,本文所涉及的本地接口類ConverterHome接口只定義了一個create方法,返回遠程接口類型,編碼如下:
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface ConverterHome extends EJBHome {
Converter create() throws RemoteException, CreateException;
}
企業組件類(EJB)編碼
本文中的企業組件(EJB)是一個無狀態會話組件,命名為ConverterEJB.java,該組件實現了兩個商業方法:dollarToYen和yenToEuro,與遠程接口Converter所定義客戶端可訪問方法一致,該類編碼如下:
import java.rmi.RemoteException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class ConverterEJB implements SessionBean {
public double dollarToYen(double dollars) {
return dollars * 121.6000;
}
public double yenToEuro(double yen) {
return yen * 0.0077;
}
public ConverterEJB() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
編譯EJB
現在需要對上述三個類進行編譯,在UNIX平台和NT/9X平台上的編譯略有區別,分別如下編譯:
UNIX:
1. 在下面的腳本compileEJB.sh中,將該成實際J2EE安裝目錄。
#!/bin/sh
J2EE_HOME=
CPATH=.:$J2EE_HOME/lib/j2ee.jar
javac -classpath "$CPATH" ConverterEJB.java ConverterHome.java Converter.java
2. 運行compileEJB.sh 腳本
Windows:
1. 在下面的compileEJB.bat批處理文件中,將 該為實際J2EE安裝目錄。
set J2EE_HOME=
set CPATH=.;%J2EE_HOME%libj2ee.jar
javac -classpath %CPATH% ConverterEJB.java ConverterHome.java Converter.java
2. 運行批處理文件compileEJB.bat。
創建J2EE應用
你不能夠直接將企業組件(EJB)部署到J2EE服務器,必須將組件加到一個J2EE 應用中然後再部署。在本節,你將創建一個叫做ConverterApp的新J2EE應用並保存為ConverterApp.ear。
1. 在命令行提示符下啟動J2EE服務器:
j2ee ?verbose
(停止服務器命令 j2ee -stop.)
2. 在另一個終端窗口運行部署工具:
deploytool
(按F1獲取部署工具幫助)
3. 創建新的J2EE應用
a. 在部署工具中選擇“文件”菜單
b. 從“文件”菜單中選擇“新應用”
c. 點擊浏覽
d. 在文件選擇框中定位存放.ear文件的目錄
e. 文件命名為ConverterApp.ear.
f. 點擊“新應用”
g. 點擊“確定”
企業組件(EJB)打包
本部分你將運行部署工具的創建EJB向導來完成下述任務:
·創建組件部署描述符
·將描述符和組件類打包為.jar文件
·將EJB.jar文件打包到J2EE應用ConverterApp.ear 文件
從“文件”菜單中選擇創建EJB來開始創建新的EJB,這個向導將顯示下面的對話框:
介紹對話框:
a. 閱讀向導特性說明文檔
b. 點擊“下一步”
EJB JAR 對話框:
a. 在標有"Enterprise Bean will go in," 的組合框中選擇ConverterApp.
b.在JAR Display Name域輸入ConverterJAR,聲明EJB .jar文件包含該組件,該名字會在樹形應用結構中呈現。
c. 點擊增加內容文本域
d. 在內容編輯對話框頂部,輸入包含.class文件的目錄
e. 選擇該目錄下相關.class加入:Converter.class, ConverterEJB.class, 和ConverterHome.class.
f. 點擊確定
g. 點擊下一步進入討論組討論。