《消息驱动Bean教案》PPT课件

《消息驱动Bean教案》PPT课件

ID:45548573

大小:349.00 KB

页数:29页

时间:2019-11-14

《消息驱动Bean教案》PPT课件_第1页
《消息驱动Bean教案》PPT课件_第2页
《消息驱动Bean教案》PPT课件_第3页
《消息驱动Bean教案》PPT课件_第4页
《消息驱动Bean教案》PPT课件_第5页
资源描述:

《《消息驱动Bean教案》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、消息驱动Bean消息驱动Bean是异步的消息消费者,当JMS目的(队列或主题)接收到消息后,EJB容器调用消息驱动Bean。消息驱动Bean没有本地和远程接口。它有一个onMessage方法,当有消息到达时,EJB容器会自动调用该方法。消息驱动Bean的优势对于客户端而言,消息驱动Bean实现了运行服务器端的业务逻辑,客户端通过向目的发送消息可以访问消息驱动Bean。消息驱动Bean是异步的,消息驱动Bean的实例不保存客户端的状态,但是实例的变量可以保存客户端消息的状态。如果Bean不保存这些状态,这些实例是等同的。消息驱动Bean使得开发异步的处理客户端

2、发送来的消息的EJB变得简单,并且允许通过利用容器管理的消息驱动Bean的实例池处理并发的消息流。消息驱动Bean与JMS消息消费者类似。不同之处:l消息驱动Bean由WeblogicServerEJB容器管理。服务器通过实现实例池处理并发的消息处理。lJMS消息消费者必须通过在服务器端的会话池中创建MessageListener类实现这一功能。l服务器可以提供安全服务及自动事务管理。消息驱动Bean的最大优势是具有“编写一次,随处配置”的特征l消息驱动Bean配置时仅能指定一个队列或主题lJMS消息消费者可以监听多个队列和主题MDB和其它EJB的区别:(1

3、)消息驱动Bean和会话Bean和实体Bean的明显区别是:没有本地接口和远程接口,客户端不能直接访问消息驱动Bean,客户端只能通过往消息驱动Bean监听的队列或主题与消息驱动Bean通信。(2)消息驱动Bean类似于无状态会话Bean,是无状态的,但比无状态会话Bean更简单。消息驱动Bean类的实例不保持特定客户程序的会话状态。消息驱动Bean和无状态会话Bean有相同的生命周期,但它没有接口。消息驱动Bean使用一个惟一的事务方法onMessage来处理消息。当消息到达时,EJB容器调用消息驱动Bean的onMessage方法,然后消息驱动Bean检

4、查传入的消息并执行相应的动作,如调用其他的组件。(3)消息驱动Bean不需返回任何数值给它的客户程序,它也不能向客户程序回传异常,因为消息驱动Bean是异步地处理消息的。消息驱动Bean的生命周期消息驱动Bean的生命周期类似于无状态会话Bean:(1)当EJB容器调用消息驱动Bean类的newInstance方法创建一个实例时,一个消息驱动Bean的生命周期开始了。(2)EJB容器调用setMessageDrivenContext方法(3)调用ejbCreate方法(4)消息驱动Bean准备处理发送到目的(队列或主题)的消息,直到超期。(5)当EJB容器不

5、再需要消息驱动Bean的实例时,EJB容器调用ejbRemoove方法,这会结束消息驱动Bean实例的生命周期。DoseNotExitReadyOnMessageejbRemove1setMessageDrivenContext2ejbCreate和无状态会话Bean一样,Message-DrivenBean也不会被钝化,只有两种状态:不存在和就绪(可以接收消息)。在生命周期的最后容器调用ejbRemove方法,实例就开始等待垃圾收集器的召唤了。消息驱动Bean例子该应用程序有两个组成部分(消息驱动Bean没有本地和远程接口):☆SimpleMessag

6、eClient:向消息队列发送消息的J2EE应用程序客户端☆SimpleMessageEJB:异步接收并处理消息队列中消息的消息驱动Bean客户端发送消息到消息队列,该消息队列是用j2eeadmin命令创建的。JMS服务提供者(这里是J2EE服务器)将消息传送给消息驱动Bean实例处理。(一)J2EE应用程序客户端SimpleMessageClient客户端程序发送消息到SimpleMessageBean监听的消息队列。A:首先它找到连接工厂和消息队列:queueConnectionFactory=(QueueConnectionFactory)jndi

7、Context.lookup("java:comp/env/jms/MyQueueConnectionFactory");queue=(Queue)jndiContext.lookup("java:comp/env/jms/QueueName");B:然后创建到消息队列的连接、消息会话和消息发送器:queueConnection=queueConnectionFactory.createQueueConnection();queueSession=queueConnection.createQueueSession(false,Session.AUTO

8、_ACKNOWLEDGE);queueSender=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。