为创建和销毁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
王永庆 阅读(146)
评论(0) 编辑 收藏 所属分类:
EJB学习笔记