在J2EE中,中间层事务逻辑由位于中间层的企业javabean组件(EJB)实现.EJB允许组件或应用开发人员集中到商务逻辑的设计,而由EJB服务器处理可依赖的,可伸缩的复杂繁琐服务.
4.一个基于J2EE技术的web企业系统的建立
基于J2EE的JSP和EJB技术,我们开发了一个购物网站,系统如图2规划.
Web服务器浏览器Jsp/servlet引擎JavabeanJsp文件JNDI远程接口主接口应用服务器
EJB
计算机1
JDBC
计算机2
数据库
图2购物网站系统结构图其中,Web服务器采用Apache,使用tomcat作为内置的JSP引擎,驻留在某台机器上,应用服务器采用Inprise公司的IAS,驻留在另一台机器上.Jsp作为与客户的交互界面,它与EnterpriseJavaBean的作用是通过JavaBean连接的,JavaBean不同于EnterpriseJavaBean,它只是一种设计时模型,提供一个良好封装的对象利于编程.运行流程:运行流程:当一个客户
注册登录到网站中时,Jsp通过EnterpriseJavaBean的主接口向应用服务器发出一个请求,由应用服务器为客户创建关联的SessionBean,创建完成后应用服务器返回该SessionBean的远程接口的引用,客户便可通过该Bean的远程接口访问SessionBean的具体实现.主接口代码如下:publicinterfaceCartHomeextendsEJBHome{Cartcreate(StringcreditCardNumber,Stringpasswd)//创建SessionBean的方法throwsRemoteException,CreateException;}远程接口代码如下:publicinterfaceCartextendsEJBObject{.........voidaddItem(Itemitem)throwsjava.rmi.RemoteException;voidpurchase()
throwsPurchaseProblemException,java.rmi.RemoteException;.........}bean的具体实现类包含客户的信息和操作,如信用卡号,用户名,密码,购物篮中商品等,关键代码如下:publicclassCartBeanimplementsSessionBean{//每一个客户关联一个CartBeanprivateVector_items=newVector();//购物篮中商品privateString_cardHolderName;//用户名privateString_creditCardNumber;//信用卡号privateString_passwd;//密码publicvoidaddItem(Itemitem){_items.addElement(item);//添加商品到购物篮中}publicvoidpurchase()//付账购物//判断信用卡中钱是否足够支付购物篮中的商品,更改卡中的余额,清空购物篮,通知货物供送部门需送的货物if(this.getRemainMoney()
sql);......}当客户把商品放置到购物篮中时,Jsp通知应用服务器执行与该客户关联的sessionbean的addItem方法,当客户付账购物时,应用服务器执行purchase方法,该方法必须包含在一个事务中,使用J2EE技术架构我们可以很容易地达到这一点,只要最后在发布描述文件中说明该session