JavaEE之消息驱动BeanWord文档格式.docx

上传人:b****6 文档编号:18804984 上传时间:2023-01-01 格式:DOCX 页数:23 大小:1.22MB
下载 相关 举报
JavaEE之消息驱动BeanWord文档格式.docx_第1页
第1页 / 共23页
JavaEE之消息驱动BeanWord文档格式.docx_第2页
第2页 / 共23页
JavaEE之消息驱动BeanWord文档格式.docx_第3页
第3页 / 共23页
JavaEE之消息驱动BeanWord文档格式.docx_第4页
第4页 / 共23页
JavaEE之消息驱动BeanWord文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

JavaEE之消息驱动BeanWord文档格式.docx

《JavaEE之消息驱动BeanWord文档格式.docx》由会员分享,可在线阅读,更多相关《JavaEE之消息驱动BeanWord文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

JavaEE之消息驱动BeanWord文档格式.docx

图6-2

3.MyMDB类自动形成代码如下:

packageejbBeans;

importjavax.ejb.ActivationConfigProperty;

importjavax.ejb.MessageDriven;

importjavax.jms.Message;

importjavax.jms.MessageListener;

@MessageDriven(mappedName="

jms/MyMDB"

activationConfig={

@ActivationConfigProperty(propertyName="

destinationType"

propertyValue="

javax.jms.Queue"

),

destination"

acknowledgeMode"

Auto-acknowledge"

})

publicclassMyMDBimplementsMessageListener{

publicvoidonMessage(Messagearg0){

//TODOAuto-generatedmethodstub

}

}

注意:

以上代码中声明的这个消息驱动Bean使用的消息目的是“jms/MyMDB”。

ationConfig声明消息的确认模式和消息目的类型(队列)。

4.在onMessage方法中添加对消息处理的代码。

这里假设接收的消息是TextMessage类型、Object类型、Map类型、Stream类型,接收到消息之后把消息输出到控制台。

修改onMessage方法,类MyMDB完整代码如下:

packagecn.edu.jms.impl;

importjava.io.ByteArrayOutputStream;

importjavax.jms.BytesMessage;

importjavax.jms.MapMessage;

importjavax.jms.ObjectMessage;

importjavax.jms.StreamMessage;

importjavax.jms.TextMessage;

importcn.edu.jms.bean.Man;

@MessageDriven(activationConfig=

{

jms/MyMDB1"

publicvoidonMessage(Messagemsg){

try{

if(msginstanceofTextMessage){

TextMessagetmsg=(TextMessage)msg;

Stringcontent=tmsg.getText();

System.out.println(content);

}elseif(msginstanceofObjectMessage){

ObjectMessageomsg=(ObjectMessage)msg;

Manman=(Man)omsg.getObject();

Stringcontent=man.getName()+"

家住"

+man.getAddress();

}elseif(msginstanceofMapMessage){

MapMessagemap=(MapMessage)msg;

Stringcontent=map.getString("

no1"

);

}elseif(msginstanceofBytesMessage){

BytesMessagebmsg=(BytesMessage)msg;

ByteArrayOutputStreambyteStream=newByteArrayOutputStream();

byte[]buffer=newbyte[256];

intlength=0;

while((length=bmsg.readBytes(buffer))!

=-1){

byteStream.write(buffer,0,length);

Stringcontent=newString(byteStream.toByteArray());

byteStream.close();

}elseif(msginstanceofStreamMessage){

StreamMessagesmsg=(StreamMessage)msg;

Stringcontent=smsg.readString();

}catch(Exceptione){

e.printStackTrace();

在项目上建立一个bean,名称为Man,类Man在包cn.edu.jms.bean下,内容如下:

packagecn.edu.jms.bean;

importjava.io.Serializable;

publicclassManimplementsSerializable{

privatestaticfinallongserialVersionUID=-1789733418716736359L;

privateStringname;

//姓名

privateStringaddress;

//地址

publicMan(Stringname,Stringaddress){

this.name=name;

this.address=address;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

publicStringgetAddress(){

returnaddress;

publicvoidsetAddress(Stringaddress){

5.部署消息驱动Bean

a.如果JBoss没有启动,则启动JBoss。

b.在工具栏点击

部署按钮,出现ProjectDeployments对话框。

图6-3

c.在ProjectDeployments对话框的【Project】下拉列表框中选择“myMDB”。

点击【Add】按钮,出现NewDeployment对话框。

d.在NewDeployment对话框中,【Server】下拉列表框选择WebLogic10.x,Deploytype项选中ExplodedArchive(development),点击【Finish】,回到ProjectDeployments对话框。

点击【OK】即可。

图6-4

e.在ProjectDepolyments对话框中出现Successfullydeployed,表示部署成功。

点击【Browse】可以看到myMDB部署的路径为“%JBOSS_HOME%\server\default\deploy\myMDB”。

图6-5

f.也可以在Servers下看到部署的消息驱动Bean,如下图所示。

图6-6

步骤3:

创建消息发送程序

1.创建Java工程

a.在主菜单中选中【New】【JavaProject】,出现NewJavaProject对话框。

b.在对话框中的Projectname文本框中输入:

myMDBClient。

JRE项选择UsedefaultJRE(Currently‘jdk1.5.0_05’),点击【Next】。

注意:

JRE是系统的JDK,如果前面的实验中没有配置JRE,可以在图中点击Configuredefault…链接,进行默认JRE的配置。

图6-7

c.观察出现的JavaSettings对话框,特别是【Libraries】选项页。

点击【Finish】。

图6-8

2.创建Java类

a.右键点击工程myMDBClient,选择【New】【Class】,出现NewJavaClass对话框。

图6-9

b.在对话框的Package文本框中输入“cn.edu.jms.test”,Name文本框中输入“QueueSender”,并且选中“publicstaticvoidmain(String[]argv)”,然后点击【Finish】。

c.如果出现如下对话框,询问是否进行视图转换,可以选择点击【No】。

图6-10

3.编写消息发送程序QueueSender的代码如下:

packagecn.edu.jms.test;

importjava.util.Properties;

importjavax.jms.Connection;

importjavax.jms.ConnectionFactory;

importjavax.jms.Destination;

importjavax.jms.JMSException;

importjavax.jms.MessageProducer;

importjavax.jms.Queue;

importjavax.jms.Session;

importjavax.naming.Context;

importjavax.naming.InitialContext;

publicclassQueueSender{

publicstaticvoidmain(String[]args){

Connectionconn=null;

Sessionsession=null;

try{

Propertiesprops=newProperties();

props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"

org.jnp.interfaces.NamingContextFactory"

props.setProperty(Context.PROVIDER_URL,"

localhost:

1099"

props.setProperty(Context.URL_PKG_PREFIXES,"

org.jboss.naming:

org.jnp.interfaces"

InitialContextctx=newInitialContext(props);

ConnectionFactoryfactory=(ConnectionFactory)ctx.lookup("

ConnectionFactory"

conn=factory.createConnection();

session=conn.createSession(false,Session.AUTO_ACKNOWLEDGE);

Destinationdestination=(Queue)ctx.lookup("

MessageProducerproducer=session.createProducer(destination);

//发送文本

TextMessagemsg=session.createTextMessage("

大家好,这是我的一个消息驱动Bean"

producer.send(msg);

//发送Ojbect(对象必须实现序列化,否则等着出错吧)

producer.send(session.createObjectMessage(newMan("

孙悟空"

"

花果山水帘洞"

)));

//发送MapMessage

MapMessagemapmsg=session.createMapMessage();

mapmsg.setObject("

花果山景区。

"

producer.send(mapmsg);

//发送BytesMessage

BytesMessagebmsg=session.createBytesMessage();

bmsg.writeBytes("

我是一个兵,来自老百姓"

.getBytes());

producer.send(bmsg);

//发送StreamMessage

StreamMessagesmsg=session.createStreamMessage();

smsg.writeString("

孙悟空大在取经路上"

producer.send(smsg);

}catch(Exceptione){

e.printStackTrace();

}finally{

session.close();

conn.close();

}catch(JMSExceptione){

由于工程中没有需要的javax.jms包,因此以上代码保存编译时将出现错误。

实际上,上面的程序中不仅需要javax.jms,而且需要%JBOSS_HOME%\client下所有jar文件,下面将导入需要的jar文件。

4.向工程中添加需要的类库。

a.右键点击工程,选择【Properties】,在出现的对话框的左侧点击【JavaBuildPath】,右侧选中【Libraries】页,点击【AddExternalJars】出现NewJavaProject对话框。

图6-22

b.选择%JBOSS_HOME%\client下的所有jar,最后点击【OK】。

图6-23

图6-24

c.类库添加后,在左边的视图中出现如下内容,注意观察添加的Jar包。

步骤4:

配置消息目的和消息工程

1.进入控制台进行配置。

a.如果WebLogic没有启动,启动JBoss服务,通过http:

//localhost:

8080打开JBoss控制台,如图6-25所示,单击AdministratConsole,弹出如图6-26所示窗口。

图6-25

b.在图6-26所示窗口中输入Username及Password,均为admin。

图6-26

c.在图6-27所示窗口中,单击JMSQueue,弹出如图6-28所示窗口。

图6-27

d.在图6-28所示窗口中,单击Addnewresource,弹出如图6-29所示窗口。

图6-28

e.在图6-29所示窗口中,单击Addnewresource,弹出如图6-29所示窗口。

图6-29

f.在图6-30所示窗口中,输入相关参数,具体操作如图6-30所示。

图6-30

图6-31

g.在图6-31所示窗口中添加角色,具体操作如图6-32所示,单击OK按钮,返回到图6-31所示窗口,如图6-33所示。

图6-32

图6-33

h.出现如下配置成功的界面,如图6-34所示。

图6-34

步骤5:

测试消息的发送和接收

1.运行消息发送程序

a.右键点击工程myMDBClient中的QueueSender,选择【Runas】->

【JavaApplication】

2.观察控制台的输出

图6-35

注意观察:

消息驱动Bean接收消息的顺序是否总是与发送消息的顺序一致?

实验总结

这个实验中,在Eclipse+MyEclipse8.5集成开发环境中创建了一个EJB工程,里面有一个消息驱动Bean:

MyMDB;

创建了一个Java工程,里面有一个消息发送者Java类:

QueueSender;

在JBoss服务器中配置了消息服务器,包括消息目的和消息工厂。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1