实验8-消息驱动bean

上传人:第*** 文档编号:34063850 上传时间:2018-02-20 格式:DOC 页数:28 大小:2.47MB
返回 下载 相关 举报
实验8-消息驱动bean_第1页
第1页 / 共28页
实验8-消息驱动bean_第2页
第2页 / 共28页
实验8-消息驱动bean_第3页
第3页 / 共28页
实验8-消息驱动bean_第4页
第4页 / 共28页
实验8-消息驱动bean_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《实验8-消息驱动bean》由会员分享,可在线阅读,更多相关《实验8-消息驱动bean(28页珍藏版)》请在金锄头文库上搜索。

1、实验 6. 消息驱动 Bean实验内容在本实验中将学习编写消息驱动 Bean,编写消息发送程序,配置消息服务器,测试消息的发送和接收。实验目的 掌握消息驱动 Bean 的编写。 掌握消息发送程序的编写。 掌握消息服务器的配置。 掌握消息发送和接收的测试。实验介绍本实验首先创建 EJB 工程,其次创建和部署消息驱动 Bean,接着创建消息发送程序,然后配置消息服务器,包括消息目的和消息工厂,最后测试消息的发送和接收。环境要求服务器:WebLogic 10集成开发环境:Eclipse+MyEclipse 6实验指导步骤 1:创建 EJB 工程 myMDB1. 在主菜单中选择【New 】 【EJB

2、Project】,出现 New EJB Project 对话框。2. 在 New EJB Project 对话框中,Project Name 文本框中输入 myMDB,J2EE Specification Level 项选中 Java EE5.0-EJB3,具体如下图所示,点击【Finish】按钮。步骤 2:创建消息驱动 Bean1. 在主菜单中选择【New】【EJB3 Message Driven Bean】,出现 New EJB3 Message Driven Bean 对话框。2. 在 New EJB3 Message Driven Bean 对话框中,Package 文本框中输入 ej

3、bBeans, Name 文本框中输入 MyMDB,Destination Type 项选中 Queue,具体如下图所示,点击【Finish 】按钮。3. MyMDB类自动形成代码如下:package ejbBeans;import javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.Message;import javax.jms.MessageListener;MessageDriven(mappedName = jms/MyMDB, activationConfig = Ac

4、tivationConfigProperty(propertyName = acknowledgeMode, propertyValue = Auto-acknowledge),ActivationConfigProperty(propertyName = destinationType, propertyValue = javax.jms.Queue) )public class MyMDB implements MessageListener public void onMessage(Message arg0) / TODO Auto-generated method stub注意:以上

5、代码中声明的这个消息驱动 Bean 使用的消息目的是“jms/MyMDB”。ationConfig 声明消息的确认模式和消息目的类型(队列)。4.在 onMessage 方法中添加对消息处理的代码。这里假设接收的消息是 TextMessage 类型,接收到消息之后把消息输出到控制台。修改 onMessage 方法,并在方法前面添加依赖注入的代码如下:/使用依赖注入得到对消息驱动Bean上下文环境的引用,这里是mdc。Resourceprivate MessageDrivenContext mdc;public void onMessage(Message inMessage) TextMess

6、age msg = null;try if (inMessage instanceof TextMessage) msg = (TextMessage) inMessage;System.out.print(消息驱动 Bean:接收到的消息 + msg.getText(); else System.out.println(消息的类型不正确: + inMessage.getClass().getName(); catch (JMSException e) e.printStackTrace();/当前事务回滚,只有容器管理事务的 EJB 才能使用这个方法。mdc.setRollbackOnly(

7、); catch (Throwable te) te.printStackTrace();注意:以上代码需要导入以下包。import javax.annotation.Resource;import javax.ejb.MessageDrivenContext;import javax.jms.JMSException;import javax.jms.TextMessage;5部署消息驱动 Beana.如果 Weblogic 没有启动,则启动 Weblogic。b. 在工具栏点击 部署按钮,出现 Project Deployments 对话框。c.在 Project Deployments

8、对话框的【Project】下拉列表框中选择“myMDB” 。点击【Add】按钮,出现 New Deployment 对话框。d.在 New Deployment 对话框中, 【Server】下拉列表框选择 WebLogic 10.x,Deploy type 项选中 Exploded Archive(development) ,点击【Finish】 ,回到 Project Deployments 对话框。点击【OK】即可。e.在 Project Depolyments 对话框中出现 Successfully deployed,表示部署成功。点击【Browse】 可以看到 myMDB 部署的路径为

9、“C:beauser_projectsdomainsbase_domainautodeploymyMDB”。f.也可以在 Servers 下看到部署的消息驱动 Bean,如下图所示。注意:由于消息驱动 Bean 没有 JNDI 名字,部署成功以后是不会在 JNDI 树上出现的。步骤 3:创建消息发送程序1. 创建 Java 工程a.在主菜单中选中【New 】【Java Project 】 ,出现 New Java Project 对话框。b.在对话框中的 Project name 文本框中输入:myMDBClient。JRE 项选择 Use default JRE(Currently jdk1

10、.5.0_05) ,点击【Next】 。注意:JRE 是系统的 JDK,如果前面的实验中没有配置 JRE,可以在图中点击 Configure default链接,进行默认 JRE 的配置。c.观察出现的 Java Settings 对话框,特别是【Libraries】选项页。点击 【Finish 】 。2. 创建 Java 类a. 右键点击工程 myMDBClient,选择【New 】【Class】 ,出现 New Java Class 对话框。b. 在对话框的 Package 文本框中输入“myMDBClients” ,Name 文本框中输入“MSGQueueSender”,并且选中“pub

11、lic static void main(String argv)”,然后点击【Finish 】 。c. 如果出现如下对话框,询问是否进行视图转换,可以选择点击【No】 。3. 编写消息发送程序 MyMDBClient 的代码如下:package beanClients;import java.util.Hashtable;import javax.jms.JMSException;import javax.jms.QueueConnection;import javax.jms.QueueConnectionFactory;import javax.jms.QueueSender;impor

12、t javax.jms.QueueSession;import javax.jms.Session;import javax.jms.TextMessage;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;public class MSGQueueSender private QueueSender sender;private TextMessage msg;private QueueConnection qCon;public MSGQueu

13、eSender(String argv) throws NamingException, JMSException Hashtable ht = new Hashtable();ht.put(Context.PROVIDER_URL,t3:/localhost:7001);ht.put(Context.INITIAL_CONTEXT_FACTORY,weblogic.jndi.WLInitialContextFactory);Context ctx = new InitialContext(ht);/所使用的消息类型是队列,消息工厂的JNDI名字为: jms/MyMDBFactoryQueue

14、ConnectionFactory qConFactory = (QueueConnectionFactory) ctx.lookup(jms/MyMDBFactory);/所使用的消息目的的JNDI名字为:jms/MyMDBjavax.jms.Queue messageQueue = (javax.jms.Queue) ctx.lookup(jms/MyMDB);qCon = qConFactory.createQueueConnection();QueueSession session = qCon.createQueueSession(false, /* not a* transacte

15、d* session*/Session.AUTO_ACKNOWLEDGE);sender = session.createSender(messageQueue);msg = session.createTextMessage();public void runClient(String str) throws JMSException msg.setText(Hello every one);sender.send(msg);System.out.println(消息1:Hello every one);msg.setText(Welcome to JMS);sender.send(msg)

16、;System.out.println(消息2:Welcome to JMS);msg.setText(str);sender.send(msg);System.out.println(消息3: +str);public static void main(String argv) throws Exception try MSGQueueSender mqs = new MSGQueueSender(argv);mqs.runClient(thank you!);System.out.print(success);mqs.qCon.close(); catch (NamingException ne) System.err.println();Syste

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号