IBM MQ 集成CXF 发送JMS 消息

1.修改wsdl 协议类型为 jms

替换

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<soap:binding style="document" transport="http://cxf.apache.org/transports/jms"/>

2.根据wsdl生成服务端代码,前提安装cxf,请参看 http://www.cnblogs.com/yun965861480/p/7400552.html

wsdl2java -server -impl -encoding UTF8 -d E:\work\waikuai\pom\cxf\src\main\java cxf\EsbJmsServer.wsdl

3.配置服务端

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"
    xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jms="http://cxf.apache.org/transports/jms" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
                        http://cxf.apache.org/bindings/soap http://cxf.apache.org/schema/bindings/soap.xsd
                        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
                        http://cxf.apache.org/transports/jms http://cxf.apache.org/schemas/configuration/jms.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

    <jaxws:endpoint id="esbJmsServer"
        implementor="com.midea.service.fxms.abstraction.atomic.technology_esbjmsserver.v1.EsbJmsServerPortImpl"
        address="jms://">
                <jaxws:properties>
                        <entry key="org.apache.cxf.message.Message.ENCODING" value="UTF-8" />
                </jaxws:properties>
                <jaxws:features>
                        <bean class="org.apache.cxf.feature.LoggingFeature" />

                        <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
                               <property name="jmsConfig">
                                    <ref bean="esbJmsServerJmsConfig" />
                                </property>
                        </bean>
                </jaxws:features>
                 <jaxws:inInterceptors>
                        <bean class="com.srcb.esb.interceptor.MediatorInterceptor"></bean>
                </jaxws:inInterceptors>
        </jaxws:endpoint>

    <bean id="esbJmsServerJmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration"
        p:connectionFactory-ref="jmsConnectionFactory"    p:targetDestination="LOCALQ.P.FXMS.REQ"
             />

    <bean id="jmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration"
        p:connectionFactory-ref="jmsConnectionFactory"    p:targetDestination="LOCALQ.P.ESBPRO.REQ"
             />

    <bean id="jmsConnectionFactory"
        class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory">
            <bean class="com.ibm.mq.jms.MQConnectionFactory">
                <property name="channel" value="SYSTEM.DEF.SVRCONN"></property>
                <!-- MQ网关集群,多个以逗号隔开 -->
                <property name="connectionNameList" value="10.16.24.180(11101),10.16.24.181(12101)"></property>
                <property name="CCSID" value="1381"></property>
                <property name="transportType" value="1"></property>
            </bean>
        </property>
    </bean>

</beans>

4.生成客户端代码

wsdl2java -client -impl -encoding UTF8 -d E:\work\waikuai\pom\cxf\cxf_jms_client\src\main\java cxf\EsbJmsServer.wsdl

5.配置客户端

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cxf="http://cxf.apache.org/core"
    xmlns:soap="http://cxf.apache.org/bindings/soap" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jms="http://cxf.apache.org/transports/jms" xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
                        http://cxf.apache.org/bindings/soap http://cxf.apache.org/schema/bindings/soap.xsd
                        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
                        http://cxf.apache.org/transports/jms http://cxf.apache.org/schemas/configuration/jms.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />

<!-- utf-8 配置,和 日志配置 -->
    <cxf:bus>
        <cxf:properties>
             <entry key="org.apache.cxf.message.Message.ENCODING" value="UTF-8" />
        </cxf:properties>
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus>

    <jaxws:client id="esbJmsServerClient"
        xmlns:s="http://fxms.service.midea.com/abstraction/atomic/technology.EsbJmsServer/v1"
        serviceClass="com.midea.service.fxms.abstraction.atomic.technology_esbjmsserver.v1.EsbJmsServerPortType"
        serviceName="s:EsbJmsServer" endpointName="s:EsbJmsServerPort"
        wsdlLocation="classpath:cxf/EsbJmsServer.wsdl" address="jms://">
        <jaxws:properties>
            <!-- 修改默认的SOAP编码 -->
            <entry key="org.apache.cxf.message.Message.ENCODING" value="UTF-8" />
        </jaxws:properties>
        <jaxws:features>
            <!-- 增加日志特征 -->
            <bean class="org.apache.cxf.feature.LoggingFeature" />
            <!-- 注入JMS配置对象 -->
            <bean class="org.apache.cxf.transport.jms.JMSConfigFeature">
                <property name="jmsConfig">
                    <ref bean="ftmsJmsConfiguration" />
                </property>
            </bean>
        </jaxws:features>
    </jaxws:client>

    <bean id="ftmsJmsConfiguration" class="org.apache.cxf.transport.jms.JMSConfiguration"
        p:connectionFactory-ref="jmsConnectionFactory" p:targetDestination="LOCALQ.C.FTMS.REQ"
        p:replyDestination="LOCALQ.FTMS.RSP">
        <!-- 超时时间(ms) -->
        <property name="receiveTimeout" value="80000"></property>
        <!-- 消息持久性:‘1‘表示非持久;‘2‘表示持久;默认为‘2‘ -->
        <property name="deliveryMode" value="1"></property>
        <property name="explicitQosEnabled" value="true"></property>
    </bean>

    <bean id="jmsConnectionFactory"
        class="org.springframework.jms.connection.SingleConnectionFactory">
        <property name="targetConnectionFactory">
            <bean class="com.ibm.mq.jms.MQConnectionFactory">
                <property name="channel" value="SYSTEM.DEF.SVRCONN"></property>
                <!-- 16777216:不同队列管理器名;67108864:相同队列管理器名 -->
                <property name="clientReconnectOptions" value="16777216"></property>
                <!-- 队列管理器IP及PORT列表,优先连接第1个地址 -->
                <property name="connectionNameList" value="10.16.24.180(11001),10.16.24.181(12001)"></property>
<!--                 <property name="connectionNameList" value="10.16.12.98(11001),10.16.12.99(12001)"></property> -->
                <!-- <property name="connectionNameList" value="10.16.13.122(11001)"></property> -->
<!--                 <property name="connectionNameList" value="10.16.10.72(11001)"></property> -->
<!--                 <property name="connectionNameList" value="127.0.0.1(11001)"></property> -->
                <property name="CCSID" value="1381"></property>
                <property name="transportType" value="1"></property>
            </bean>
        </property>
    </bean>
</beans>
时间: 2024-10-12 05:07:58

IBM MQ 集成CXF 发送JMS 消息的相关文章

IBM MQ消息中间件jms消息中RHF2消息头的处理

公司的技术平台在和某券商对接IBM MQ消息中间件时,发送到MQ中的消息多出了消息头信息:RHF2,造成消息的接收处理不正常.在此记录此问题的处理方式. 在IBM MQ中提供了一个参数 targetClient,可以通过此参数来控制jms消息中是否启用该消息头.当采用jms 作为IBM MQ的client时,在消息目标(队列名或主题名)后添加该参数即可,格式为: topic:///{目标名}?targetClient=1 targetClient=1时:消息中不会包括RHF2消息头:target

spring监听与IBM MQ JMS整合

spring xml 的配置: 文件名:applicationContext-biz-mq.xml [html] view plain copy print? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001

IBM Mq Spring JMS 的xml配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/

Oozie 生成JMS消息并向 JMS Provider发送消息过程分析

一,涉及到的工程 从官网下载源码,mvn 编译成 Eclipse工程文件: 对于JMS消息这一块,主要涉及到两个工程: oozie-core工程有问题的原因是还需要一些其他的依赖工程未导入: 二,Oozie 生成 JMS消息 主要涉及到的一些类 oozie-core 工程中的: oozie-client工程中的: 三,相关代码: 对于Oozie Server而言,它是消息的生产者.在oozie-default.xml/oozie-site.xml里面配置好连接参数,消息服务器....Oozie就

用Spring发送和接受JMS消息的一个小例子

Spring提供的JmsTemplate对原生的JMS API进行了一层薄薄的封装,使用起来非常的方便. 我使用的JMS消息代理插件是Apache的ActiveMQ,建议安装最新版本,因为我之前安装老版本,各种不兼容,各种bug,最新版的activemq-all-5.9.1.jar包里面已经有了slf4j.impl包,之前就是被这个坑了...把这个jar包加到lib目录下面,就不会有各种ClassNotFound异常和类冲突的bug了. 下载ActiveMQ解压之后运行bin下面的activem

IBM MQ介绍

转自:http://hi.baidu.com/lubezhang/blog/item/bd308b3b7ecce3ec14cecb4f.html IBM MQ(IBM Message Queue)是IBM的一款商业消息中间产品,适用于分布式计算环境或异构系统之中.消息队列技术是分布式应用间交换信息的一种技术.消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走.通过消息队列,应用程序可独立地执行--它们不需要知道彼此的位置.或在继续执行前不需要等待接收程序接收此消息. MQ基本概念

运维文档分享(2):IBM MQ运维使用手册

前言:最近整理电脑,发现之前写的几篇生产上的运维测试文档,特来分享. 一.测试环境说明 本次测试linux端和windows端主要参数配置如下:Linux:操作系统版本:SUSE Linux Enterprise Server 10 SP4    32bitMQ版本:7.1.0.3Ip地址:192.168.0.151 Windows:操作系统版本:Windows 7旗舰版SP1 32bitMQ版本:7.1.0.3Ip地址:192.168.0.111 二.MQ简介1)消息中间件概述    消息队列

软件-MQ-MQ:IBM MQ

ylbtech-软件-MQ-MQ:MQ(IBM MQ) MQ传递主干,在世界屡获殊荣. 它帮您搭建企业服务总线(ESB)的基础传输层.IBM WebSphere MQ为SOA提供可靠的消息传递.它为经过验证的消息传递主干, 全方位. 多用途的数据传输, 并帮助您搭建企业服务总线的传输基础设施. 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过

IBM MQ 从接收通道获取数据

1.IBM MQ服务端配置(模拟服务端) a)打开“WebSphere MQ资源管理器”,新建队列管理器,名称为fwd_dlgl_name(服务器端mq队列管理器名称),其余采用默认设置; b)在fwd_dlgl_name(服务器端mq队列管理器名称) 队列管理器中创建本地队列,名称为fwd_bddl_name(服务器端mq本地队列名称); c)创建传输队列,名称为fwd_csdl_name(服务器端mq本地传输队列名称)(新建时选择“本地队列”,将“用法”设置为“传输”); d)创建远程队列定