思诚科技 seecen LOGO
咨询热线:0791-87557233
  首页 |   Java EE  
关于思诚
关注官方微信

会话组件(Session Beans)

来源:网络    更新时间:2014-12-11


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




importjava.util.*;
importjavax.ejb.*;

publicclassCartEJBimplementsSessionBean{

StringcustomerName;
StringcustomerId;
Vectorcontents;

publicvoidejbCreate(Stringperson)throwsCreateException{

if(person==null){
thrownewCreateException("Nullpersonnotallowed.");
}
else{
customerName=person;
}

customerId="0";
contents=newVector();
}

publicvoidejbCreate(Stringperson,Stringid)
throwsCreateException{

if(person==null){
thrownewCreateException("Nullpersonnotallowed.");
}
else{
customerName=person;
}

IdVerifieridChecker=newIdVerifier();
if(idChecker.validate(id)){
customerId=id;
}
else{
thrownewCreateException("Invalidid:" id);
}

contents=newVector();
}

publicvoidaddBook(Stringtitle){

contents.addElement(title);
}

publicvoidremoveBook(Stringtitle)throwsBookException{

booleanresult=contents.removeElement(title);
if(result==false){
thrownewBookException(title "notincart.");
}
}

publicVectorgetContents(){
returncontents;
}

publicCartEJB(){}
publicvoidejbRemove(){}
publicvoidejbActivate(){}
publicvoidejbPassivate(){}
publicvoidsetSessionContext(SessionContextsc){}

}


会话组件接口(SessionBean)
会话组件接口SessionBean继承EntERPriseBean接口,而后者继承了Serializable接口。SessionBean接口定义了ejbRemove,ejbActivate,ejbPassivate和setSessionContext方法。CartEJB类没有用到这些类,但必须实现它们否则应该定义成抽象类。因此,这些方法在CartEJB类中被声明为空方法,随后的内容中将就这些方法何时有什么用途进行说明。

  • 上一篇文章:

  • 下一篇文章:
  •  

    0791-87557233

    重视每个来电 珍惜您的时间
    思诚者开发沙龙
    江西思诚科技有限公司  赣ICP备17006097号  CopyRight©2014 - 2018