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