《实习六 消息驱动Bean》由会员分享,可在线阅读,更多相关《实习六 消息驱动Bean(25页珍藏版)》请在金锄头文库上搜索。
1、实验六 消息驱动Bean实验内容在本实验中将学习编写消息驱动Bean,编写消息发送程序,配备消息服务器,测试消息的发送和接受。实验目的u 掌握消息驱动Bean的编写。u 掌握消息发送程序的编写。u 掌握消息服务器的配备。u 掌握消息发送和接受的测试。实验简介本实验一方面创立EJB工程,另一方面创立和部署消息驱动Bean,接着创立消息发送程序,然后配备消息服务器,涉及消息目的和消息工厂,最后测试消息的发送和接受。环境规定服务器:JBoss6.0集成开发环境:MyEclipse 8.5/MyEclipse 8.6实验指引环节1:创立EJB工程myMDB1. 在主菜单中选择【New】【EJB Pro
2、ject】,浮现New EJB Project对话框。2. 在New EJB Project对话框中,Project Name文本框中输入myMDB,J2EE Specification Level项选中Java EE5.0-EJB3,具体如下图所示,点击【Finish】按钮。图6-1环节2:创立消息驱动Bean1. 在主菜单中选择【New】【EJB3 Message Driven Bean】,浮现New EJB3 Message Driven Bean对话框。2. 在New EJB3 Message Driven Bean对话框中,Package文本框中输入ejbBeans, Name文本框
3、中输入MyMDB,Destination Type项选中Queue,具体如下图所示,点击【Finish】按钮。图6-23. MyMDB类自动形成代码如下:package ejbBeans;import javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.Message;import javax.jms.MessageListener;MessageDriven(mappedName = jms/MyMDB, activationConfig = ActivationConfigPr
4、operty(propertyName=destinationType, propertyValue=javax.jms.Queue), ActivationConfigProperty(propertyName=destination, propertyValue=jms/MyMDB), ActivationConfigProperty(propertyName=acknowledgeMode, propertyValue=Auto-acknowledge)public class MyMDB implements MessageListener public void onMessage(
5、Message arg0) / TODO Auto-generated method stub注意:以上代码中声明的这个消息驱动Bean使用的消息目的是“jms/MyMDB”。ationConfig声明消息的确认模式和消息目的类型(队列)。4.在onMessage措施中添加对消息解决的代码。这里假设接受的消息是TextMessage类型、Object类型、Map类型、Stream类型,接受到消息之后把消息输出到控制台。修改onMessage措施,类MyMDB完整代码如下:package cn.edu.jms.impl;import java.io.ByteArrayOutputStream;i
6、mport javax.ejb.ActivationConfigProperty;import javax.ejb.MessageDriven;import javax.jms.BytesMessage;import javax.jms.MapMessage;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.ObjectMessage;import javax.jms.StreamMessage;import javax.jms.TextMessage;import cn.edu.jms.bea
7、n.Man;MessageDriven(activationConfig = ActivationConfigProperty(propertyName=destinationType, propertyValue=javax.jms.Queue), ActivationConfigProperty(propertyName=destination, propertyValue=jms/MyMDB1), ActivationConfigProperty(propertyName=acknowledgeMode, propertyValue=Auto-acknowledge)public cla
8、ss MyMDB implements MessageListener public void onMessage(Message msg) try if (msg instanceof TextMessage) TextMessage tmsg = (TextMessage) msg; String content = tmsg.getText(); System.out.println(content); else if(msg instanceof ObjectMessage) ObjectMessage omsg = (ObjectMessage) msg; Man man = (Ma
9、n) omsg.getObject(); String content = man.getName()+ 家住+ man.getAddress(); System.out.println(content); else if(msg instanceof MapMessage) MapMessage map = (MapMessage) msg; String content = map.getString(no1); System.out.println(content); else if(msg instanceof BytesMessage) BytesMessage bmsg = (By
10、tesMessage) msg; ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); byte buffer = new byte256; int length = 0; while (length = bmsg.readBytes(buffer) != -1) byteStream.write(buffer, 0, length); String content = new String(byteStream.toByteArray(); byteStream.close(); System.out.println(
11、content); else if(msg instanceof StreamMessage) StreamMessage smsg = (StreamMessage) msg; String content = smsg.readString(); System.out.println(content); catch (Exception e) e.printStackTrace(); 在项目上建立一种bean,名称为Man,类Man在包cn.edu.jms.bean下,内容如下:package cn.edu.jms.bean;import java.io.Serializable;publ
12、ic class Man implements Serializable private static final long serialVersionUID = -16736359L; private String name;/姓名 private String address;/地址 public Man(String name, String address) this.name = name; this.address = address; public String getName() return name; public void setName(String name) thi
13、s.name = name; public String getAddress() return address; public void setAddress(String address) this.address = address; 5部署消息驱动Beana.如果JBoss没有启动,则启动JBoss。b. 在工具栏点击部署按钮,浮现Project Deployments对话框。图6-3c.在Project Deployments对话框的【Project】下拉列表框中选择“myMDB”。点击【Add】按钮,浮现New Deployment对话框。d.在New Deployment对话框中,【Server】下拉列表框选择WebLogic 10.x,Deploy type项选中Exploded Archive(development),点击【Finish