安裝EJB運行和開發環境 EJB必須要在EJB容器內執行
所以
我們必須安裝一個符合J
EE標准的EJB容器
為了幫助我們部署自己的EJB
我們還需要一個部署工具
來自Sun的
對J
EE的參考實現包含了一個EJB容器和一個EJB部署工具
這個J
EE參考實現能夠在Sun發布的J
EE開發工具包裡找到
J
EE開發包要依靠Java
SDK
標准版(Standard Edition
J
SE)的開發包
所以你也需要把它下載下來
你需要J
SE SDK 來運行參照實現的J
EE服務器
並創建和運行EJB應用程序
一旦你下載了開發包
你就要安裝它們
並為每個開發包選擇理想的位置
你要先定義一個叫作JAVA_HOME的環境變量
並將它指向J
SE開發包的安裝目錄
然後
定義一個叫做J
EE_HOME的環境變量
並把它指向J
EE開發包的安裝目錄
現在你就准備好開始編寫你的EJB了
編寫一個簡單會話EJB 開發一個EJB所涉及的大多數步驟和概念和我們開發傳統的Java對象(plain
old Java object
POJO)所使用的是相同的
只有少數的不同之處
下面就是開發和部署EJB的一個基本步驟
為你的EJB編寫類和接口
為你的EJB編寫部署描述符
將EJB和相關聯的文件打包進一個jar文件
部署EJB
會話bean有兩種不同的類型
在我們開始編寫代碼之前
讓我們來看看它們之間的相同之處和不同之處
狀態會話EJB概述 狀態會話EJB會在單個會話期間維持一種和客戶端的對話狀態
這就表示狀態會話EJB能夠在單個會話期間
維持從一個客戶端跨越多個調用的實例變量
一旦客戶端完成了同EJB的交互操作
而且EJB容易刪除了EJB
那麼EJB的會話就會結束
用於EJB的所有狀態數據都會被刪除
無狀態會話EJB概述 無狀態會話EJB不會為每個單獨的客戶端都維持一個對話狀態
對無狀態會話EJB的每次調用
都應該被當作是對一個全新的對象實例的請求
因為任何實例-變量狀態都會在調用之間丟失
無狀態會話EJB不會被EJB容器保存到第二存儲地裡
所以程序員必須要知道
每個客戶端的每次調用之間的所有數據都是瞬時的
無狀態會話EJB的瞬時特性允許EJB容器重復使用EJB實例
因此常常會優化EJB的性能
會話Bean之間的關系 圖A說明了EJB客戶端
EJB容器和幾個會話EJB之間的關系
會話EJB包括至少三個強制類/接口
第一個強制類/接口是Component接口
Component接口定義了一些對EJB來說是可視的商業方法
它必須擴展javax
ejb
EJBObject
這裡我們會舉個例子
實現一個非常簡單的無狀態會話EJB
它會在一個叫作getBalance的方法裡返回帳目結算
我們Component接口的代碼如下
package com
jeffhanson
ejb;
public interface Account extends javax
ejb
EJBObject
java
rmi
Remote
{
public String getBalance() throws java
rmi
RemoteException;
}
第二個強制類/接口是Home接口
Home接口被EJB客戶端用來獲取對Bean的組件接口的參照
它必須擴展javax
ejb
EJBHome
我們Home接口的代碼如下
package com
jeffhanson
ejb;
public interface AccountHome extends javax
ejb
EJBHome
{
public Account create() throws javax
ejb
CreateException
java
rmi
RemoteException;
}
第三個強制類/接口是Enterprise Bean類
Enterprise Bean類為Component接口和Home接口提供實現
用於會話EJB的Enterprise Bean類必須要實現javax
ejb
SessionBean接口
我們Enterprise Bean類的代碼如下
package com
jeffhanson
ejb;
public class AccountBean
implements javax
ejb
SessionBean
{
private javax
ejb
SessionContextctx;
public void ejbActivate() {}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbPassivate() {}
public void setSessionContext(javax
ejb
SessionContextctx)
{
this
ctx = ctx;
}
// business method
public String getBalance()
throws java
rmi
RemoteException
{
String balance = dataObj
getAccountBalance();
return(balance);
}
}
結語 在本文裡
我們通過帶你嘗試了一個簡單的無狀態會話EJB實現的細節
盡力減輕了你可能有的對創建自己第一個EJB的恐懼感
在下一篇文章裡
我們將探討實體bean的細節
以及它們如何被用來封裝數據實體
即商業對象訪問的內容
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26895.html