快速业务通道

eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
        if(message instanceof ObjectMessage)             {                 ObjectMessage objmsg = (ObjectMessage) message;                 DateBean dateBean = (DateBean) objmsg.getObject();                 em.persist(dateBean);                 System.out.println("成功持久化DateBean对象!");             }             else             {                 System.out.println("消息类型错误!");             }         }         catch (Exception e)         {             throw new EJBException(e);         }     } }

eclipse + JBoss 5 + EJB3开发指南(14):消息驱动Bean(3)

时间:2011-09-18 blogjava 哈佛校训

消息驱动Bean需要使用@MessageDriven进行注释。要注意的是destination属性的值是queue/MDBQueue 。JBoss不会自已建立一个Queue对象,因此,需要手工来配置Queue对象。读者可以<JBoss5.x安装目 录>\server\default\deploy目录中建立一个xxx-service.xml文件,其中xxx可以任意取值,但必须跟 “-service”后缀,例如,abc-service.xml。该文件可以放在deploy或其子目录(可以是多层子目录) 中。该文件的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<server>
  <mbean code="org.jboss.mq.server.jmx.Queue" 

name="jboss.mq.destination:service=Queue,name=MDBQueue">
    <depends optional-attribute-

name="DestinationManager">jboss.mq:service=DestinationManager</depends>
  </mbean>
</server>

要注意的是,<mbean>元素的name属性值中的name必须是MDBQueue,要与queue/MDBQueue中的/ 后面的部分一致。如果不进行上面的配置,在启动JBOSS时就会抛出如下的异常:

javax.naming.NameNotFoundException: MDBQueue not bound

也可以将<mbean>元素放在deploy目录中的其他以-service.xml结尾的文件中。

如果不设置destination属性的值,在启动JBoss是会抛出如下的异常:

org.jboss.deployers.spi.DeploymentException: Required config property RequiredConfigPropertyMetaData@174098f[name=destination descriptions= [DescriptionMetaData@4ca30b[language=zh]]] for messagingType ''javax.jms.MessageListener'' not found in activation config [ActivationConfigProperty(destinationType=javax.jms.Queue), ActivationConfigProperty(connectionFactoryJndiName=MyQueueConnectionFactory), ActivationConfigProperty(destinationName=MyRequestQueue)] ra=jboss.jca:service=RARDeployment,name=''jms-ra.rar''

... ...

三、编写调用消息驱动Bean的SessionBean

package service;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
import javax.persistence.EntityManager;
import entity.DateBean;
import entity.Greeting;

@Stateless

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号