实验8-消息驱动Bean.doc_第1页
实验8-消息驱动Bean.doc_第2页
实验8-消息驱动Bean.doc_第3页
实验8-消息驱动Bean.doc_第4页
实验8-消息驱动Bean.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验6. 消息驱动Bean实验内容在本实验中将学习编写消息驱动Bean,编写消息发送程序,配置消息服务器,测试消息的发送和接收。实验目的u 掌握消息驱动Bean的编写。u 掌握消息发送程序的编写。u 掌握消息服务器的配置。u 掌握消息发送和接收的测试。实验介绍本实验首先创建EJB工程,其次创建和部署消息驱动Bean,接着创建消息发送程序,然后配置消息服务器,包括消息目的和消息工厂,最后测试消息的发送和接收。环境要求服务器:WebLogic 10集成开发环境:Eclipse+MyEclipse 6实验指导步骤1:创建EJB工程myMDB1. 在主菜单中选择【New】【EJB 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文本框中输入ejbBeans, 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 = ActivationConfigProperty(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注意:以上代码中声明的这个消息驱动Bean使用的消息目的是“jms/MyMDB”。ationConfig声明消息的确认模式和消息目的类型(队列)。4.在onMessage方法中添加对消息处理的代码。这里假设接收的消息是TextMessage类型,接收到消息之后把消息输出到控制台。修改onMessage方法,并在方法前面添加依赖注入的代码如下:/使用依赖注入得到对消息驱动Bean上下文环境的引用,这里是mdc。Resource private MessageDrivenContext mdc; public void onMessage(Message inMessage) TextMessage 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(); 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对话框的【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部署的路径为“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.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”,并且选中“public 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;import 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 MSGQueueSender(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/MyMDBFactoryQueueConnectionFactory 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 * transacted * 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);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();System.err.println(* Please ensure that you have setup the+ JMS Server properly. The JMS Server and the appropriate + JMS Destinations must be configured before running the + examples.);ne.printStackTrace();System.err.println();注意:由于工程中没有需要的javax.jms包,因此以上代码保存编译时将出现错误。实际上,上面的程序中不仅需要javax.jms,而且需要weblogic.jndi.WLInitialContextFactory,下面将导入需要的两个包:wljmsclient.jar和wlclient.jar。4. 向工程中添加需要的类库。a. 右键点击工程,选择【Properties】,在出现的对话框的左侧点击【Java Build Path】,右侧选中【Libraries】页,点击【Add External Jars】出现New Java Project对话框。b. 选择C:beawlserver_10.0serverlib下的wljmsclient.jar和wlclient.jar,最后点击【OK】。c. 类库添加后,在左边的视图中出现如下内容,注意观察添加的Jar包。步骤4:配置消息目的和消息工程1. 进入控制台进行配置。a. 如果WebLogic没有启动,启动weblogic服务,通过http:/localhost:7001/console打开weblogic控制台。b.点击【Lock&Edit】解除编辑锁定。2.配置JMS Servers。a.点击【Services】【Messaging】【JMS Servers】,右侧出现New,点击New创建JMS Servers。如下图所示。点击【Next】。b.在出现的页面中,target选项选择“AdminServer”。点击【Finish】。c.出现如下配置成功的界面。3配置JMS Modulesa点击【Services】【Messaging】【JMS Modules】,右侧出现New,点击New创建JMS Modules。如下图所示。点击【Next】。b.在出现的页面中,target选项选中“AdminServer”。点击【Next】。b.在出现的页面中,选中“Would you like to add resources to this JMS system modules”。点击【Finish】。c.出现的页面中,下拉滚动条。d.点击【New】创建资源。e.在出现的页面中,Choose the type of resource you want to create项选择“Queue”。f.在出现的页面中,JNDI Name文本框中输入“jms/MyMDB”,点击【Next】。注意:此处JNDI Name要和前面的消息驱动Bean代码中的消息目的以及消息发送者的消息目的保持一致。g.在出现的页面中,点击【Create a New Subdeployment】。注意:如果Targets项没有出现合适的subdeployment就需要点击【Create a New Subdeployment】。 h.在Create a New Subdeployment页面中,点击【OK】。i.在Create a New JMS System Module Resource页面中,Targets选项选中“JMSServer0”,点击【Finish】。j.在出现的Settings for SystemModule-0配置页面中,点击【New】。如果没有看到该配置页面,则点击【Services】【Messaging】【JMS Modules】,右侧出现已经配置好的JMS Module:SystemModule0链接,点击链接,也能出现Settings for SystemModule-0配置界面。k.在出现的配置页面中,Choose the type of resource you want to create项,选择Connection Factory,点击【Next】。l.在出现的配置页面中,JNDI文本框中输入jms/MyMDBFactory,点击【Next】。注意此处的JNDI名

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论