您的位置:首页 >> 编程开发 >> Java >> J2EE >> 正文
J2EE RSS
 

会话组件(Session Beans)

http://www.rdxx.com 02年01月07日 12:12 互联网 我要投稿

关键词: 会话 , Session , Beans , 组件 , BEA , SSI
 
胡德平 编译(hudeping@263.net www.JavaUnion.org)
会话组件在J2EE服务器中表现为一个客户端,该客户端通过调用会话组件方法获取远程服务。会话组件为其客户端完成指定任务,屏蔽了客户端需要在服务器端执行商业任务的复杂性。
正如其名所暗示,会话组件工作原理类似于交互会话。会话组件是不共享得--它在会话期间只能与一个客户端交互、一个用户交互。和交互会话一样,会话组件没有持续,当客户端中断会话后会话组将也将中断并不再与客户端相关联。
会话组件是非常有用而强大的,因为它将你的客户端范围扩展到了远程服务器--并且它们容易开发。本文将通过简单示例,为你展示如何编写、编译和部署一个简单的会话组件。
会话组件示例
本文所举例子是一个在线书店中关于购物车的演示,组件的客户端需要实现往购物车增加、删除、查询等操作功能。为了实现这个例子,你需要完成下面程序的编码:
·会话组件类(CartEJB.java)
·本地接口(CartHome.java)
·远程接口(Cart.java)
上述三个文件在所有企业组件(EJB)编程中都是必须的,为了满足特定应用更多需求,企业组件可能需要更多的帮助类(helper class)。CartEJB会话组件使用了两个帮助类,即 BookException.java和IdVerifier.java。
如果你安装了J2EE,上述源码文件可以在doc/guides/ejb/examples/cart目录中找到。
会话组件类
本例子中会话组件类命名为CartEJB.,与其它所有的会话组件一样, CartEJB 类必须满足以下要求:
·实现SessionBean 接口
·类定义为公共类(public)
·类不能是抽象类或终极类
·实现一个或多个ejbCreate方法
·实现商业方法
·有无参数的构造方法
·必须没有终极方法(finalize method)
CartEJB源码如下:




import java.util.*;
import javax.ejb.*;

public class CartEJB implements SessionBean {

String customerName;
String customerId;
Vector contents;

public void ejbCreate(String person) throws CreateException {

if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}

customerId = "0";
contents = new Vector();
}

public void ejbCreate(String person, String id)
throws CreateException {

if (person == null) {
throw new CreateException("Null person not allowed.");
}
else {
customerName = person;
}

IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new CreateException("Invalid id: " + id);
}

contents = new Vector();
}

public void addBook(String title) {

contents.addElement(title);
}

public void removeBook(String title) throws BookException {

boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title + " not in cart.");
}
}

public Vector getContents() {
return contents;
}

public CartEJB() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}

}


会话组件接口(SessionBean)
会话组件接口SessionBean继承EnterpriseBean 接口,而后者继承了Serializable 接口。SessionBean 接口定义了ejbRemove, ejbActivate, ejbPassivate 和setSessionContext 方法。CartEJB 类没有用到这些类,但必须实现它们否则应该定义成抽象类。因此,这些方法在CartEJB类中被声明为空方法,随后的内容中将就这些方法何时有什么用途进行说明。
EjbCreate方法
由于企业组件运行在EJB容器中,所以客户端无法直接示例化这些组件。只有EJB容器可以示例化企业组件,在本文所述例子中完成实例化需要实现以下步骤:

9 7 3 1 2 3 4 4 8 :


 
 
标签: 会话 , Session , Beans , 组件 , BEA , SSI 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站