系统实现中的业务EJB组件---SessionBean和MDB的设计实现_第1页
系统实现中的业务EJB组件---SessionBean和MDB的设计实现_第2页
系统实现中的业务EJB组件---SessionBean和MDB的设计实现_第3页
系统实现中的业务EJB组件---SessionBean和MDB的设计实现_第4页
系统实现中的业务EJB组件---SessionBean和MDB的设计实现_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四部分:系统实现中的EJB组件-SessionBean和MDB的设计实现1、在该项目中填加一个EJB组件(1)选择File-New菜单,然后在Object Gallery中选择“EJB Module”模板,点击“OK”按钮(2)设置EJB组件在下面的对话框内对该EJB组件进行设置,将该EJB组件的名称定为EBussEJBBean。(3)最后点击“OK”按钮,将生成对应的EJB组件的程序代码。2、在该项目中新建一个有状态的SessionBean(1)该有状态的SessionBean的名称为EBussSessionBean(2)设置该有状态的Session EJB的属性,如名称、类型等名称为:E

2、BussSessionBean,类型为stateful(有状态), Session Synchronization为true,Transaction type事务类型选择为容器管理(Container),interfaces类型为remote。Session synchronization选择为false。(3)下面是针对UserInfo CMP而言给该有状态的SessionBean添加属性成员添加一个代表用户数据的属性成员,类型为UserInfoData,名称为OnePersonInfoData并提供get和set方法。(4)下面是针对UserInfo CMP而言给该有状态的SessionB

3、ean添加方法成员l 再增加一个ejbCreate方法,输入参数为UserInfoData somePersonInfoData,接口类型为home(利用它可以创建出SessionBean的对象)。l 添加一个名称TestUserNameAndPswd,输入参数为String username, String userPswd,返回参数为boolean,接口类型为Remote。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderException声明l 添加一个名称为getAllUserInfoData的方法,该方法不带有输

4、入参数,返回为java.util.Vector 类型,该方法为Remote接口类型的方法。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderException声明。l 再添加一个名称为getUserInfoDataByID的方法,该方法带有输入参数 int userID,返回为clientData.UserInfoData 类型,该方法为Remote接口类型的方法。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderException声明。l 添加一个名

5、称为addOneUserInfo的方法,该方法的输入参数为UserInfoData onePersonInfoData,返回为boolean 类型,该方法为Remote接口类型的方法。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加CreateException声明。l 添加一个名称为getMaxUserID的方法,该方法的输入参数为void,返回为int 类型,该方法为Remote接口类型的方法。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderExcepti

6、on声明。l 添加一个名称为updateOneUserInfo的方法,该方法的输入参数为UserInfoData onePersonInfoData,返回为boolean 类型,该方法为Remote接口类型的方法。由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderException声明。l 添加一个名称为deleteOneUserInfo的方法,该方法的输入参数为String userID,返回为boolean 类型,该方法为Remote接口类型的方法。l 最后的状态为:(5)下面是针对BookInfo CMP而言给该有状

7、态的SessionBean添加属性成员添加一个代表图书数据的属性成员,类型为BookInfoData,名称为OneBookInfoData并提供get和set方法。(6)下面是针对BookInfo CMP而言给该有状态的SessionBean添加方法成员l 再增加一个ejbCreate方法,输入参数为BookInfoData someBookInfoData,接口类型为home(利用它可以创建出SessionBean的对象)。l 添加一个名称为findBookWithEJBBean的方法,该方法带有输入参数String findKeyWordType, String nameString,返回

8、为java.util.Vector 类型,该方法为Remote接口类型的方法。并且增加其它的异常定义(请见下面所示)由于该方法要增加其它的异常抛出声明,因此在其Remote接口和EBussSessionBean类中为该方法添加FinderException声明package ebookstore;public interface EBussSession extends javax.ejb.EJBObject public java.util.Vector findBookWithEJBBean(String findKeyWordType, String nameString) throws

9、 RemoteException,FinderException; public class EBussSessionBean implements SessionBean public java.util.Vector findBookWithEJBBean(String findKeyWordType, String nameString) throws javax.ejb.FinderException3、编程该有状态的SessionBean主要是响应Servlet的请求并根据请求访问相关的CMP Bean,具体的代码请见源程序。4、在该项目中新建一个无状态的SessionBean(1)

10、名称为EBussStateLessBean(2)设置该EJB的属性,如名称、类型等名称为:EBussStateLessBean,类型为Stateless(无状态), Transaction type事务类型选择为容器管理(Container),interfaces类型为remote。(3)给该无状态的SessionBean添加方法成员5、编程该无状态的SessionBean6、在该项目中添加一个消息对列的MDB(1)(2)设置该MDBl 该MDB的名称为:EBussMDBBeanl Message Selector:为消息的过滤设置l 在DestinName:EBussJMSQueueJNDI

11、消息对列的JNDI名称,应该与weblogic中的mydomain JMS Servers MyJMSServer JMS Destinations的 JNDI Name名称保持一致l Connect Factory Name:myfactory(为在weblogic中所设置的JMS connection factory的JNDI Name)Transaction type为 Bean类型(3)在该MDB EJB中增加一个EBussSessionHome类型的成员和EBussSession类型的成员以访问SessionBean , 成员对象的名称为sessionEJBHomeObject,数据

12、类型为EBussSessionHome类型。不提供get和set方法。再增加一个成员对象,名称为sessionEJBRemoteObject,数据类型为EBussSession类型。(4)查看JBuilder所生成的该MDB的程序package ebookstoreservlet;import javax.ejb.*;import javax.jms.*;import javax.naming.*;public class EBussMDBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messag

13、eDrivenContext; EBussSessionHome sessionEJBHomeObject; EBussSession sessionEJBRemoteObject; public void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMessage(Message msg) /*todo Complete this method*/ public void

14、setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.messageDrivenContext = messageDrivenContext; (5)编程该MDB中的onMessage(Message msg)方法(属于MessageListener接口中所定义出的方法)以接收从Servlet消息的生产者所发送来的对列消息如“查询某一人员的信息”或者“预订业务”,然后对业务代理类中的SessionBean的代理方法进行调用,再通过SessionBean去调用CMP以获得数据。package ebookst

15、ore;import javax.ejb.*;import javax.jms.*;import javax.naming.*;import eBussinDelegate.*; /引入商业业务代理方法所在的包public class EBussMDBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContext;/* 下面为在Queue MDB中访问业务代理所需要的对象声明*/ EBookBussDelegate eBookBussDelegate=null; publi

16、c void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMessage(Message msg) try TextMessage TMS = (TextMessage) msg; String queueMessageText = TMS.getText(); System.out.println(所获得的消息对列的内容是: + queueMessageText); eBo

17、okBussDelegate=new EBookBussDelegate(); eBookBussDelegate.getQueueMessageTextFromMDB(queueMessageText); System.out.println(已经调用了业务代理中的方法); catch (Exception ex) System.out.println(在发送消息对列时出现了错误,成为如下:+ex.toString(); public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.me

18、ssageDrivenContext = messageDrivenContext; 当消息的发送者向消息对列发送消息时,该MDB将接收消息对列中的消息,然后将在服务器的控制台上显示出消息的内容。7、在该项目中添加一个消息主题的MDB(1)(2)设置该Topic MDBBean的参数l 该MDB的名称为:TopicMDBEJBBeanl Message Selector:为消息的过滤设置l 在DestinName:EBussJMSTopicJNDI消息主题的JNDI名称,应该与weblogic中的mydomain JMS Servers MyJMSServer JMS Destinations

19、的 JNDI Name名称保持一致l Destination Type选择为javax.jms.Topicl Connect Factory Name:myfactory(为在weblogic中所设置的JMS connection factory的JNDI Name)l Transaction type为 Bean类型(注意:一定要选择为Bean方式)否则会出现如下的错误内容(3)查看所生成的Topic Bean的代码 TopicMDBEJBBean.java(注意:其包名称也应该为ebookstore包)package ebookstore;import javax.ejb.*;import

20、 javax.jms.*;import javax.naming.*;public class TopicMDBEJBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContext; public void ejbCreate() throws CreateException /*todo Complete this method*/ public void ejbRemove() /*todo Complete this method*/ public void onMe

21、ssage(Message msg) /*todo Complete this method*/ public void setMessageDrivenContext(MessageDrivenContext messageDrivenContext) this.messageDrivenContext = messageDrivenContext; (4)编程该MDB中的onMessage(Message msg)方法(属于MessageListener接口中所定义出的方法)以接收从Servlet消息的生产者所发送来的主题消息,然后对业务代理类中的SessionBean的代理方法进行调用,再通过SessionBean去调用CMP以获得数据。package ebookstore;import javax.ejb.*;import javax.jms.*;import javax.naming.*;import eBussinDelegate.*; /引入商业业务代理方法所在的包public class TopicMDBEJBBean implements MessageDrivenBean, MessageListener MessageDrivenContext messageDrivenContex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论