上一篇我们知道了消息驱动Bean的基本用法,实际大型分布式企业应用中,往往会采用高性能的商业Queue产品,比如IBM Webshpere MQ(目前最新版本是7.5 ),下面讲解下如何在Jboss EAP 6.2 版本上整合Webshpere MQ 7.5

一、修改jboss的standalone-full.xml

a) 添加IBM的resource-adapters

找到<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1"/> 改成下面这样(注:里面的参数值,大家根据实际情况,自行修改)

 <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
<resource-adapters>
<resource-adapter id="wmq.jmsra.rar">
<archive>
wmq.jmsra.rar
</archive>
<transaction-support>NoTransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:/MyConnectionFactoryCnblogs" use-java-context="true" pool-name="connectionfactorypoolcnblogs">
<config-property name="port">
1414
</config-property>
<config-property name="channel">
DC.SVRCONN
</config-property>
<config-property name="hostName">
localhost
</config-property>
<config-property name="transportType">
CLIENT
</config-property>
<config-property name="queueManager">
QM_APPLE
</config-property>
</connection-definition>
</connection-definitions>
</resource-adapter>
</resource-adapters>
</subsystem>

b) 找到<subsystem xmlns="urn:jboss:domain:ejb3:1.4">下的<mdb>节点,改成

             <mdb>
<resource-adapter-ref resource-adapter-name="wmq.jmsra.rar"/>
<bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>
</mdb>

二、部署wmq.jmsra.rar

IBM MQ的安装目录 C:\Program Files (x86)\IBM\WebSphere MQ\java\lib\jca 下有一个wmq.jmsra.rar文件,把它复制到

%JBOSS_HOME%\standalone\deployments 下,jboss启动后,将自动部署该rar

注:rar包的版本必须与MQ相符(即:如果你要监听MQ 7.5的队列消息,则该rar必须是MQ 7.5自带的)

附: 7.5版wmq.jmsra.rar的下载地址 http://pan.baidu.com/s/1jG5bWAM

三、MDB端的配置
a) 注解方式

 import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import util.LoggerUtil; @MessageDriven(name = "WebSphereMQMDB", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"),
@ActivationConfigProperty(propertyName = "hostName", propertyValue = "172.21.126.177"),
@ActivationConfigProperty(propertyName = "port", propertyValue = "1414"),
@ActivationConfigProperty(propertyName = "channel", propertyValue = "DC.SVRCONN"),
@ActivationConfigProperty(propertyName = "queueManager", propertyValue = "QM_APPLE"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "Q1"),
@ActivationConfigProperty(propertyName = "transportType", propertyValue = "CLIENT") })
public class HelloWorldMDB implements MessageListener {

注:HelloWorldMDB的onMessage方法处理跟上一篇完全相同,就不重复了。

b) jboss-ejb3.xml 方式

 <?xml version="1.0" encoding="UTF-8"?>
<jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:c="urn:clustering:1.0"
xmlns:r="urn:resource-adapter-binding"
xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss-ejb3-2_0.xsd http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
version="3.1" impl-version="2.0">
<enterprise-beans>
<message-driven>
<ejb-name>WebSphereMQMDB</ejb-name>
<ejb-class>mdb.HelloWorldMDB</ejb-class>
<activation-config>
<activation-config-property>
<activation-config-property-name>destinationType</activation-config-property-name>
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>useJNDI</activation-config-property-name>
<activation-config-property-value>false</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>hostName</activation-config-property-name>
<activation-config-property-value>172.21.126.177</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>port</activation-config-property-name>
<activation-config-property-value>1414</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>channel</activation-config-property-name>
<activation-config-property-value>DC.SVRCONN</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>queueManager</activation-config-property-name>
<activation-config-property-value>QM_APPLE</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>destination</activation-config-property-name>
<activation-config-property-value>Q1</activation-config-property-value>
</activation-config-property>
<activation-config-property>
<activation-config-property-name>transportType</activation-config-property-name>
<activation-config-property-value>CLIENT</activation-config-property-value>
</activation-config-property>
</activation-config>
</message-driven>
</enterprise-beans>
</jboss:ejb-jar>

这二种配置方式完全等效

四、测试验证

a) 以standalone-full.xml 配置启动jboss

%jboss_home%\standalone\configuration>move standalone.xml standalone_backup.xml

%jboss_home%\standalone\configuration>copy standalone-full.xml standalone.xml

%jboss_home%\standalone\configuration>..\..\bin\standalone.bat

b) 在MQ所在服务器上,用WebShpere MQ资源管理器,向Q1放入一条测试消息

顺利的话,Jboss控制台上,会马上显示已收到消息

同时在%JBOSS_HOME%\standalone\log\server.log日志里,也能找到相关记录

12:11:12,559 INFO  [class util.LoggerUtil] (default-threads - 2) Received Message from queue: TEST MESSAGE
12:11:12,560 INFO  [stdout] (default-threads - 2) Received Message from queue: TEST MESSAGE

jboss EAP 6.2 + Message Drive Bean(MDB) 整合IBM Webshpere MQ 7.5的更多相关文章

  1. ejb3: message drive bean(MDB)示例

    上一篇已经知道了JMS的基本操作,今天来看一下ejb3中的一种重要bean:Message Drive Bean(mdb) 如果要不断监听一个队列中的消息,通常我们需要写一个监听程序,这需要一定的开发 ...

  2. vmware安装cent os 6.5 + oracle 11g xe + jboss eap 6.2 + weblogic 12c+ webshpere mq 7.5

    前言: mac系统发展速度确实很快,短短数年,mac os上已经能网银支付(中行.招行.工商.支付宝等均已全面支持mac os了),windows上的经典常用软件:qq.飞信.旺旺.有道词典.有道云笔 ...

  3. CAS (10) —— JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法

    CAS (10) -- JBoss EAP 6.4下部署CAS时出现错误exception.message=Error decoding flow execution的解决办法 jboss版本: jb ...

  4. JBoss EAP应用服务器部署方法和JBoss 开发JMS消息服务小例子

    一.download JBoss-EAP-6.2.0GA: http://jbossas.jboss.org/downloads JBoss Enterprise Application Platfo ...

  5. 如何让jboss eap 6.2+ 的多个war应用共享 jar 包?

    weblogic有一个很贴心的功能,允许把多个war应用共同依赖的jar包,打包一个单独的war,以libary方式部署,然后各应用在weblogic.xml里声明引用该libary即可,这样可大大减 ...

  6. JMS + jboss EAP 6.2 示例

    .Net中如果需要消息队列功能,可以很方便的使用微软自带的MSMQ,对应到Java中,这个功能就是JMS(Java Message Service). 下面以Jboss EAP 6.2环境,介绍一下基 ...

  7. tomee 第一个 远程调用 Message-driven bean(MDB)

    MDB 整体结构 HelloMDB.java package cn.zno; import javax.jms.Connection; import javax.jms.ConnectionFacto ...

  8. JBOSS EAP实战(1)

    JBOSS的诞生 1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前面思考,然后写着什么东西.不,他没有在写程序,他在写辞呈.他正在做出人生的一个重大决定:他要辞掉在SUN的这份工作, ...

  9. JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)

    本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB ...

随机推荐

  1. Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用

    上篇文章Asp.net MVC验证那些事(1)-- 介绍和验证规则使用中,介绍了Asp.net MVC中的验证功能以及如何使用.这里将对MVC中内置的验证规则进行总结. 一,查找所有验证规则 上篇文章 ...

  2. Spring AOP 动态代理 缓存

    Spring AOP应用:xml配置及注解实现. 动态代理:jdk.cglib.javassist 缓存应用:高速缓存提供程序ehcache,页面缓存,session缓存 项目地址:https://g ...

  3. 使用eclipse查看源码的方法

    打开eclipse,建立项目:Test,将struts2相关jar包导入到其中.在Package Explorer标签栏下操作. 如下图: 在此,以查阅struts2中,struts2-core-2. ...

  4. python scrapy版 极客学院爬虫V2

    python scrapy版 极客学院爬虫V2 1 基本技术 使用scrapy 2 这个爬虫的难点是 Request中的headers和cookies 尝试过好多次才成功(模拟登录),否则只能抓免费课 ...

  5. Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法

    Validation failed for one or more entities. See ‘EntityValidationErrors’解决方法 You can extract all the ...

  6. spring服务定位器类

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:通过持有的Spring应用场景ApplicationContext,可在任何地方获取bean. 1. 服务定位器类:S ...

  7. 烂泥:通过binlog恢复mysql数据库

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用bin ...

  8. Macbook无法上网,访问不了appstore、safria、网易云等,但QQ、谷歌浏览器可以用--解决方案

    ---------------------我是分割线  update 2016-09-22 20:55:22----------------------------- 发现之前那个方法也是不稳定,后来 ...

  9. 猜拳游戏GuessGame源码

    该游戏是一款比较不错的猜拳游戏GuessGame源码案例,GuessGame——猜拳游戏,这也是我自己的第一款休闲类的游戏案例,游戏实现也比较简单的,希望这个能够帮大家的学习和使用,更多安卓源码尽在源 ...

  10. bzoj-4517 4517: [Sdoi2016]排列计数(组合数学)

    题目链接: 4517: [Sdoi2016]排列计数 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 846  Solved: 530[Submit][ ...