初识EJB3.0的MDB来开发JMS
来源:互联网 发布:删除多重网络 编辑:程序博客网 时间:2024/04/30 08:08
第一次接触和使用EJB3.0的MDB来开发JMS,写下一点心得
第一步在已有的EJB3.0下创建一个MDB,在创建的时候可以看到,首先每一个MDB都实现了MessageListener接口;其次,需要选择采用的是queue还是topic类型的消息。
根据消息类型的不同,产生的注释会有不同,需要具体情况进行配置。
采用Queue类型的时候,会产生如下的注释:
@MessageDriven(mappedName = "jms/B", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") })
采用topic类型的时候,会产生如下的注释:
@MessageDriven(mappedName = "jms/A", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "subscriptionDurability", propertyValue = "Durable"),
@ActivationConfigProperty(propertyName = "clientId", propertyValue = "A"),
@ActivationConfigProperty(propertyName = "subscriptionName", propertyValue = "A") })
很显然,采用topic域的时候需要配置的东西比较多,事实上topic也是较queue要复杂一些的。
由于以后系统要用到topic域,我仅仅开发的是一个示例程序,所以就只是简单的配置。@MessageDriven(mappedName = "jms/NewMessageConsumer",
activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
@ActivationConfigProperty(propertyName = "destination" , propertyValue = "topic/newTopic/myTopic")
}
)
虽然是短短几行,但是对于初学的我来讲还是费了不少周折。
NewMessageConsumer是mdb文件的名称,@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
这两行一般由系统生成之后如果没有变化就可以不用修改。然而,自动生成的程序里面缺少了@ActivationConfigProperty(propertyName = "destination" , propertyValue = "topic/newTopic/myTopic")这一行。如果没有这一行jboss会出现org.jboss.deployment.DeploymentException: Required config property RequiredConfigPropertyMetaData@d
最初以为是MessageListener的配置出现了问题,加了一行 messageListenerInterface=javax.jms.MessageListener.class,但是问题依然还在,
上网找了一圈之后发现是destination 没有设置,在D:/jboss
加上了@ActivationConfigProperty(propertyName = "destination" , propertyValue = "topic/newTopic ") 但是问题依然存在。后来发现原来jndiName没有进行设置,建立了新的topic但是没有创建新的jndi,于是修改刚刚配置过的文档,添加了一行:
修改了程序中的注释:@ActivationConfigProperty(propertyName = "destination" , propertyValue = "topic/newTopic/myTopic") ,这样就可以了。
Jboss中的详细信息:
运行client程序,会发现在jboss中会出现一条消息的完整格式:
Header {
jmsDestination : TOPIC.newTopic
jmsDeliveryMode : 2
jmsExpiration : 0
jmsPriority : 4
jmsMessageID : ID:3-12058913534061
jmsTimeStamp : 1205891353406
jmsCorrelationID: null
jmsReplyTo : null
jmsType : null
jmsRedelivered : true
jmsProperties : {JMS_JBOSS_REDELIVERY_COUNT=3}
jmsPropReadWrite: false
msgReadOnly : true
producerClientId: ID:3
}
Body {
text :succcess!
}
这些属性其实可以在annotation中进行设置
参考:
http://blog.csdn.net/wangke8476/archive/2007/09/08/1776877.aspx
http://www.80diy.com/home/20050413/16/3933445.html
http://topic.csdn.net/u/20080118/15/87678e07-8aec-47d1-9499-698bbfef0b3d.html
- 初识EJB3.0的MDB来开发JMS
- EJB3.0学习笔记---JMS/MDB/Pub/Sub/P2P
- EJB3.0 MDB实现
- 使用MDB开发JMS步骤
- Weblogic10+EJB3.0下的MDB遇到问题及解决
- (7)EJB3.0 EJB开发消息驱动bean 【经典】 JMS
- EJB3.0消息驱动bean(MDB)
- Eclipse + JBOSS IDE来开发EJB3.0的开发环境配置(转)
- myeclipse8+jboss5开发EJB3消息驱动Bean(MDB)实例
- jboss6 ejb3 jms 集成的那些事
- 初识EJB3.0的答疑总结(一)
- 初识EJB3.0的答疑总结(二)
- EJB3.0 消息驱动:MDB(Message Driven Bean)
- EJB3.0学习笔记---MDB--第一个MDBBean程序:
- EJB3.0中的session bean以及MDB解析
- JMS和MDB总结
- JMS与MDB
- JMS与MDB实例
- ArcEngine 最短路径分析(源码)
- Lotus Connections 2 预览
- ArcEngine中拓扑的使用
- Project中的工作结构分解与任务类型
- ArcEngine开发程序中关闭时内存泄漏的问题
- 初识EJB3.0的MDB来开发JMS
- 怎样安装和配置Tomcat Admin
- 利用HTTP的POST方法做个在线翻译的小工具
- 修改job的执行间隔时间:sys.dbms_job.interval()
- ASP.NET一个简单的在线人数统计办法
- 经纬度到平面坐标的相互转换
- 在AE中取得选择要素的方法
- HOOK技术在VC编程中的应用基础
- 自己写的模仿google动态提示下拉