為創(chuàng)建和銷毀EJB對(duì)象,開發(fā)者需要使用Home接口。Home接口的實(shí)現(xiàn)是Home對(duì)象,而Home對(duì)象由EJB服務(wù)器提供的工具生成。
package com.wyq.ejb;
import javax.ejb.EJBHome;
/**
* Hello EJB組件的Home接口。它由EJB服務(wù)器提供的工具實(shí)現(xiàn)。Home接口實(shí)現(xiàn)
* 稱之為Home對(duì)象。Home對(duì)象充當(dāng)了創(chuàng)建EJB對(duì)象的工廠。
*
* 在該Home接口中,存在create()方法。它對(duì)應(yīng)于HelloBean中的ejbCreate()方法。
*/
public interface HelloHome extends EJBHome {
/**
* 創(chuàng)建EJB對(duì)象,
* @return 新建的EJB對(duì)象。
*/
Hello create() throws java.rmi.RemoteException,javax.ejb.CreateException;
/**
* 1、為獲得對(duì)EJB對(duì)象的引用,客戶需要使用create方法。其中,create方法還能夠完成
* EJB組件的初始化工作。
* 2、create方法拋出了如下異常:RemoteException和CreateException。由于Home對(duì)象是網(wǎng)絡(luò)
* 使能的基于RMI-IIOP的遠(yuǎn)程對(duì)象,因此要拋出RemoteException異常。
*/
}
本地Home接口是Home接口的高性能版本。
package com.wyq.ejb;
import javax.ejb.EJBLocalHome;
/**
* Hello EJB組件的本地Home接口。它由EJB服務(wù)器提供的工具實(shí)現(xiàn)。
* 本地Home接口實(shí)現(xiàn)稱之為本地Home對(duì)象。本地Home對(duì)象充當(dāng)了創(chuàng)建EJB本地對(duì)象的工廠。
*
*/
public interface HelloLocalHome extends EJBLocalHome {
/**
* 創(chuàng)建EJB本地對(duì)象
* @return 返回新創(chuàng)建的EJB本地對(duì)象。
*/
HelloLocal create()throws javax.ejb.CreateException;
}
創(chuàng)建企業(yè)Bean類
package com.wyq.ejb;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* 演示無狀態(tài)會(huì)話Bean.
*
*/
public class HelloBean implements SessionBean {
private SessionContext ctx;
//EJB規(guī)范定義的方法
public void ejbCreate(){
System.out.println("ejbCreate()");
}
public void ejbRemove() throws EJBException, RemoteException {
System.out.println("ejbRemove()");
}
public void ejbActivate() throws EJBException, RemoteException {
System.out.println("ejbActivate()");
}
public void ejbPassivate() throws EJBException, RemoteException {
System.out.println("ejbPassivate()");
}
/**
* 由于企業(yè)Bean宿主在受管容器中,因此容器能夠在任何時(shí)候調(diào)用企業(yè)Bean的方法。但如果企業(yè)Bean
* 需要查詢?nèi)萜鞯漠?dāng)前信息的話,需要為EJB提供何種信息呢?比如在EJB中,組件本身可能需要查詢當(dāng)前用戶
* 的安全性憑證信息。
*
* 容器將這些信息包含在稱之為"EJB上下文"的對(duì)象中。EJB上下文對(duì)象是通往EJB容器的關(guān)口。其中,EJB上
* 下文是容器的組成部分,開發(fā)者能夠在企業(yè)Bean中訪問到它。因此,在某種程度上,EJB上下文是為企業(yè)Bean
* 訪問容器提供的回調(diào)。該回調(diào)有助于企業(yè)Bean探知其自身的狀態(tài),并修改他們。
*
* EJB上下文對(duì)于會(huì)話Bean、實(shí)體Bean、消息驅(qū)動(dòng)Bean而言很有用。比如會(huì)話Bean含有會(huì)話上下文、實(shí)體Bean
* 含有實(shí)體上下文、消息驅(qū)動(dòng)Bean含有消息驅(qū)動(dòng)上下文。
* 依據(jù)EJB類型的不同,開發(fā)者能夠分別通過調(diào)用setSessionContext、setEntityContext、setMessageDivenContext
* 方法設(shè)置EJB上下文信息。
*/
public void setSessionContext(SessionContext ctx) throws EJBException,
RemoteException {
this.ctx = ctx;
}
//業(yè)務(wù)方法
public String hello(){
System.out.println("hello()");
return "Hello,World!";
}
}
posted on 2009-10-30 13:01
王永慶 閱讀(160)
評(píng)論(0) 編輯 收藏 所屬分類:
EJB學(xué)習(xí)筆記