当前位置:天才代写 > tutorial > JAVA 教程 > J2EE的异步动静机制(下)

J2EE的异步动静机制(下)

2017-11-11 08:00 星期六 所属: JAVA 教程 浏览:282

副标题#e#

三.动静驱动豆简介

异步动静也可以由动静驱动豆来实现。在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 >


#p#副标题#e#

2.运行Subscriber:

D:\mysourcecode\testjms>java -Djms.properties=%J2EE_HOME%\config\jms_client.properties jmssub

一般显示功效如下:

Topic name is WeatherReport
Java(TM) Message Service 1.0.2 Reference Implementation (build b10)
To end program, enter Q or q, then
Reading message: A sunny day.

3.运行Publisher:

打开另一个呼吁行窗口,输入下面呼吁:

set classpath=%J2EE_HOME%\lib\j2ee.jar;.
java -Djms.properties=%J2EE_HOME%\config\jms_client.properties jmspub

一般显示功效如下:

Topic name is WeatherReport
Java(TM) Message Service 1.0.2 Reference Implementation (build b10)
Publishing message: A sunny day.

4.删除一个话题

D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination MyTopic

5.利用动静驱动豆

下面是用动静驱动豆实现接管动静。利用deploytool将附录中的Bean陈设好,可以看到下面的信息:

Deploying message driven bean MsgBean, consuming from WeatherReport
Application testjms deployed.

然后再次运行Publisher。可以看到动静驱动豆输出下面的功效:

MESSAGE BEAN: Message received: A sunny day.

 

    关键字:

天才代写-代写联系方式