编程资料集中营
 | 网站首页 | 文章中心 | 编程资料2 | 软件下载 | BT下载 | 八卦星闻 | 音乐在线 | 在线游戏 | 免费电影 | 进入问吧 | 
J2EE 组件开发:消息驱动的EJB,发布者:发布时间:2006-06-16一、概述消息服务是一种在分布式应用之间提供消息传递服务的软件,具有可靠、异步、宽松结合、语言中立、平台中立的特点,而且通常是可配置的。它的实现原理是:对发送者和接收者之间传递的消息进行封装,并在分布式消息客户程序结合的位置加上一个软件处理层。消息服务为消息的客户程序提供了一个接口,这个接口隔离了底层的消息服务,使得各种不同的客户程序能够通过一个友好的编程接口方,
您现在的位置: 编程资料,学习资料,c,c++,vc,vc++,java,jsp,j2ee,j2me,asp,php >> 文章中心 >> JAVA 专区 >> J2EE EJB JMS 技术 >> 文章正文
【字体:
J2EE 组件开发:消息驱动的EJB   进入问吧

本站地址:http://www.bajiao123.com

作者:本站    文章来源:网络    点击数:    更新时间:2007-1-31    

J2EE 组件开发:消息驱动的EJB

onnectionFactory) jndiContext.lookup

("java:comp/env/jms/MyQueueConnectionFactory");

queue = (Queue) jndiContext.lookup("java:comp/env/jms/QueueName");

接下来,客户程序创建队列连接、会话和一个消息发送器:

queueConnection = queueConnectionFactory.createQueueConnection();

queueSession = queueConnection.createQueueSession(false,

Session.AUTO_ACKNOWLEDGE);

queueSender = queueSession.createSender(queue);

最后,客户程序把几个消息发送到队列:

message = queueSession.createTextMessage();

for (int i = 0; i < NUM_MSGS; i++) {

message.setText("我是" + msgArray[i] );

System.out.println("Sending message: " +

message.getText());

queueSender.send(message);

}

5.2 MDB组件

SimpleMessageEJB类阐明了编写消息驱动Bean类的要求:

实现MessageDrivenBean接口和MessageListener接口。

类定义为public类型。

类不能定义成abstract或final。

实现一个onMessage()方法。

实现一个ejbCreate()方法和一个ejbRemove()方法。

包含一个public类型的不需要参数的构造方法。

不能定义finalize()方法。

与会话Bean和实体Bean不同,消息驱动的Bean不定义客户程序访问的接口。客户程序不是先定位消息驱动的Bean,再调用这些Bean上的方法。虽然消息驱动的Bean没有业务方法,但它们可以包含由onMessasge()方法内部调用的辅助方法。

当队列接收到一个消息,EJB容器将调用消息驱动Bean的onMessage()方法。在SimpleMessageBean类中,onMessage()方法把接收到的消息定型(cast)成为TextMessage类型,然后显示出文本信息:

public void onMessage(Message inMessage) {

TextMessage msg = null;

try {

if (inMessage instanceof TextMessage) {

msg = (TextMessage) inMessage;

System.out.println("MESSAGE BEAN:收到消息: "

+ msg.getText());

} else {

System.out.println("消息类型错误: "

+ inMessage.getClass().getName());

}

} catch (JMSException e) {

e.printStackTrace();

mdc.setRollbackOnly();

} catch (Throwable te) {

te.printStackTrace();

} }

消息驱动Bean的ejbCreate()方法和ejbRemove()方法必须符合以下要求:

访问控制修饰符必须是public。

返回值类型必须是void。

不能有static和final修饰符。

throws子句不能定义任何应用自定义的异常。

不能带有参数。

在SimpleMessageBean类中,ejbCreate()方法和ejbRemove()方法都是空的,不执行任何

有实际意义的操作。

5.3 打包

接下来我们要把上面的应用打包成一个J2EE EAR文件。首先要把SimpleMessageEJB打包成Jar文件。通常,打包过程可以通过工具完成,但理解模块部署描述器仍是必要的。在EJB应用模块部署描述器中,顶级元素下面包含元素。下面可以包含一组元素(按照EJB 2.0新规范),每一个元素描述一个消息驱动Bean的配置和部署。SimpleMessageEJB的ejb-jar.xml文件如下所示。元素内定义了消息驱动Bean的配置和部署信息,例如唯一的Bean名字、Bean类的名字、配置参数、安全信息、事务信息、消息目的地类型等。

......



SimpleMessageJAR





SimpleMessageEJB

SimpleMessageEJB

SimpleMessageBean

Container



javax.jms.Queue



SimpleMessageEJB

Bean

onMessage



javax.jms.Message



Required

除了ejb-jar.xml部署描述器之外,通常还要有面向特定平台和环境的部署描述器。大多数时候,这种描述器可以用GUI工具编写。请参见下载代码中提供的例子。

打包好各个模块之后,接着还要把J2EE应用打包成EAR文件。有关这一步骤的详细说明,请参见开发平台的相关文档。本文以后有关部署和运行的说明,就以打包后的EAR文件为基础。

5.4 部署和运行

假设我们在Sun的J2EE参考实现上部署和测试这个示例应用。为便于查看消息驱动Bean的输出,我们必须以-verbose模式启动服务器:

j2ee -verbose

用下面的j2eeadmin命令创建队列:

j2eeadmin -addJmsDestination jms/MyQueue queue

验证队列已经创建成功:

j2eeadmin -listJmsDestination

启动deploytool,选择菜单“File-->Open”,打开SimpleMessageApp.ear文件。接着,

选择菜单“Tools --> Deploy”,部署应用。出现部署提示时,选中“Return Client

JAR”检查框。

在一个命令窗口中,进入EAR文件(SimpleMessageAppClient.jar文件)所在目录,把环

境变量APPCPATH设置为SimpleMessageAppClient.jar。然后,执行下面的命令:

runclient -client SimpleMessageApp.ear -name SimpleMessageClient -textauth

在登录提示中,输入用户名字j2ee,输入密码j2ee。此时,客户程序将输出以下内容:

Sending message: 我是老大孙悟空

Sending message: 我是老二猪八戒

Sending message: 我是老三沙和尚

上一页  [1] [2] 

   

进入问吧

本站地址:http://www.bajiao123.com

文章录入:admin    责任编辑:admin 
编程资料集中营