zoukankan      html  css  js  c++  java
  • 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:workwaikuaipomcxfsrcmainjava cxfEsbJmsServer.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:workwaikuaipomcxfcxf_jms_clientsrcmainjava cxfEsbJmsServer.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>
     
  • 相关阅读:
    《设计模式》(精华集)
    TClientDataSet使用(二)
    害我查了半天的错误!av错误,小心Component对象使用Application当Owner
    释放自己
    最近在转C#
    TClientDataSet的使用技巧
    小心使用可修改的常量。
    指数函数和正弦函数相乘
    adb 常用命令
    win7下ie9设置无法保存的问题
  • 原文地址:https://www.cnblogs.com/dzhou/p/10253931.html
Copyright © 2011-2022 走看看