J2EE的异步消息机制(下)[Java编程]
本文“J2EE的异步消息机制(下)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
三.消息驱动豆简介
异步消息也可以由消息驱动豆来实现.在EJB 1.1标准中,定义了两种范例的EJB.辨别是实体豆(Entity Bean)和会话豆(Session Bean).客户端普通是以同步的,阻塞方法来调用豆的办法.消息驱动豆将EJB和JMS的功效结合在一同.
正如前述,会话豆普通实现商务逻辑,客户端不能同享一个会话豆.实体豆普通和一些在永久存储中的一些实体条目相对应的.这两种豆普通都有REMOTE和HOME接口,用来与客户端交互.并且,这些交互都是同步的,阻塞方法举行的.比方,一个恳求发送给一个豆,通过阻塞式办法调用,服务器返回一个呼应.调用者在收到返回后,才能举行下一步处理.消息驱动豆普通配置成是一个分外的主题(topic)或行列的客户端,作为消息的利用者.但消息驱动豆没有HOME和REMOTE接口.一个消息产生者将消息写入TOPIC或行列时,并不知道利用者是一个消息驱动豆.这就答应集成一个分布式的计算系统时,有很大的机动性.消息驱动豆没有会话性质的状况,全部的实例在不处理恳求时是相同的,这与无状况会话豆是近似的.将豆的实例放在缓冲池里,也是高效处理消息驱动豆的一种办法.一个消息驱动豆必须间接或直接地从javax.ejb.MessageDrivenBean接口担当而来.这个接口是由javax.jms.MessageListener担当而来.这个办法的一个参数是javax.jms.Message.可以是任何有效的JMS消息范例.办法的申明中并不包含一个thrown语句.因此在消息处理中,不会仍出利用程序非常.当容器接纳到消息时,它首先是从一个缓冲池里得到现成的一个消息驱动豆,然后,假如配置文件需求的,容器还要设置一个和事件处理上下文的一个接洽.当这些管理任务完成时,接纳到的消息传送给onMessage()办法.一旦办法完成,事件确认或返回,豆又被重新放回到缓冲池.
ejbRemove()在把消息驱动豆从任何存储上删除时调用.并举行清楚操作和垃圾汇集.必须在ejbRemove()办法中释放全部豆的实例用到的资源.
setMessageDrivenConnection()办法只有一个参数-javax.ejb.MessageDrivenContext的实例.MessageDrivenContext类与在实体和会话豆中的上下文近似.当一个豆的实例成立时,容器传入豆用的上下文.上下文中得到环境信息的办法,以及JTA UserTranscation类,用于豆管理事件处理的场所.
别的,豆供应者必须供应一个ejbCreate()办法(无参数),用于在EJB服务器对豆举行设置.豆实例可以在ejbCreate()办法中获得任何需求的资源.
消息驱动豆大大地简化了成立一个JMS利用者,成立和配置一个JMS消息利用者这些功效都交由EJB容器来做了.开辟人员只需简单地实现消息驱动豆的接口,配置给EJB服务器,用来成立一个接纳消息的商业逻辑部件.
四.一个实例
本文为了阐明上面的概念,编写了一个消息驱动豆,一个Publisher和一个Subscriber的代码.
下面讲一下怎样运行实例.这里假定读者已经从SUN主页上下载了J2EE SDK 1.3 Bate,并已经安装好了.
1.成立一个WeatherReport
主题(Topic):
j2eeadmin -addJmsDestination WeatherReport topic
可以用下面号令看一下能否精确成立:
D:j2sdkee1.3\bin>j2eeadmin -listJmsDestination JmsDestination
普通显示后果以下:
< JMS Destination : jms/Topic , javax.jms.Topic >
< JMS Destination : jms/Queue , javax.jms.Queue >
< JMS Destination : WeatherReport , javax.jms.Topic >
以上是“J2EE的异步消息机制(下)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |