`
yvonxiao
  • 浏览: 77375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Mule的QName解析问题

阅读更多


    项目中和其它系统交互是利用Mule来进行的,在之前的集成过程中也一直都很顺利,可是在集成一个短信服务时Mule总是不能按照配置文件的配置发送正确的SOAP消息。因为是个简单的集成.NET发布的服务,我就直接用Mule的axis模块来转发SOAP消息,我要集成的这个服务配置是这样配置的:

 

<axis:endpoint name="MsgSendEndpoint" address="http://192.168.0.2/Service/Service1.asmx?method=MessageSend" soapAction="#[methodNamespace]#[method]">


	<axis:soap-method method="qname{MessageSend:Service1}">


		<axis:soap-parameter parameter="my_num" type="string" mode="IN" />


		<axis:soap-parameter parameter="fee_num" type="string" mode="IN" />


		<axis:soap-parameter parameter="user_num" type="string" mode="IN" />


		<axis:soap-parameter parameter="msg_content" type="string" mode="IN" />


		<axis:soap-parameter parameter="ip" type="string" mode="IN" />


		<axis:soap-parameter parameter="process_flag" type="string" mode="IN" />


		<axis:soap-parameter parameter="out" type="string" mode="OUT" />


	</axis:soap-method>


</axis:endpoint>
<service name="MsgSendService">


 <inbound>


  <vm:inbound-endpoint path="msgSendService" synchronous="true"


   remoteSync="true" transformer-refs="StringToMsgObject" />


  <forwarding-router />


 </inbound>


 <outbound>


  <pass-through-router>


   <axis:outbound-endpoint ref="MsgSendEndpoint"></axis:outbound-endpoint>


  </pass-through-router>


 </outbound>


</service>


     经过几次测试,我发现如果设置axis:soap-method元素的method属性的qname时,如果是这样的:<axis:soap-method method="qname{MessageSend :http://Service1/}">,就可以让Mule设置正确的QName,发送正确的SOAP消息,但是如果QName的namespace不是http://.../的URL形式就不能发送正确的SOAP消息。


    如果这个服务的提供方的WebService的方法的namespace是http://.../ 的URL形式就好了,可是这个namespace就是"Service1",我必须要解决为什么namespace一定要是http://.../ 的URL形式才可以Mule让发送正确的SOAP消息。


  后来发现在Mule的mule-module-spring-config模块里,负责解析QName的org.mule.config.spring.editors.QNamePropertyEditor类的protected QName parseQName(String val)方法好像是写错了。原来这个方法也是通过StringTokenizer获得":"分隔的部分来解析QName的,如果能获得2部分,也就是类似于MessageSend:Service1这种写法的情况下,就会执行:return new QName((String) elements.get(0), (String) elements.get(1));查看J2SE 5.0的API知道:public QName(String namespaceURI,String localPart),第一个参数应该是QName 的名称空间 URI,第二个应该是QName 的本地部分,我想这里面的参数顺序应该是写反了吧,我把这句代码改成return new QName((String) elements.get(1), (String) elements.get(0));重新编译,替换掉原来的class,再次运行Mule,发现生成的SOAP消息是正确的了。


不知道最新版本的Mule的QNamePropertyEditor类是否已经改掉了,我现在的Mule 2.1.2是存在这个问题的。

分享到:
评论
1 楼 SINCE1978 2010-03-21  
最近也在学习mule,望多交流!qq920210722

相关推荐

    mule IDE (mule ESB)

    Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...

    应用集成开源框架MULE的源代码

    Mule 是一个基于ESB架构理念的消息平台。Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是...

    mule文档详解 mule

    Mule是一个企业服务总线(ESB)消息框架,而且Mule是一个轻量级且高度可扩展的ESB。

    mule例子分析

    详细对mule的两个例子进行分析

    mule in action 说明+文档介绍

    mule in action 和doc文档详细介绍 Mule的核心组件是UMO(Universal Message Objects,从Mule2.0开始UMO这一概念已经被组件Componse所代替),UMO实现整合逻辑。UMO可以是POJO,JavaBean等等。它支持30多种传输协议...

    Mule in Action, 2nd Edition

    Mule in Action, Second Edition is a totally-revised guide covering Mule 3 fundamentals and best practices. It starts with a quick ESB overview and then dives into rich examples covering core concepts ...

    mule -esb 源码

    mule -esb 源码

    mule线程数量参数配置.zip_mule_mule 线程配置_mule设置并发数_参数_线程

    关于在tomcat上进行mule多线程数量参数配置

    Mule in Action

    Mule is the most widely used open source ESB-with millions of downloads-providing an alternative to expensive commercial options. Mule in Action is acomprehensive tutorial designed for working Java ...

    Mule ESB开发一个小例子

    mule,mule esb,Mule,ESB

    MULE ESB案例

    Mule ESB 项目在Linux中的部署与开发与应用案例

    Mule ESB手册-中文版

    文档主要介绍了Mule ESB的使用方法,并结合具体实例加深对ESB的理解,对新手很有帮助哦!

    mule入门文档

    mule入门文档 mule入门文档 mule入门文档mule入门文档

    MuleStudio用户手册.doc

    Mule是一个以Java为核心的轻量级的消息框架和整合平台,基于EIP(Enterprise Integeration Patterns,由Hohpe和Woolf编写的一本书)而实现的。Mule的核心组件是UMO(Universal Message Objects,从Mule2.0开始UMO这一...

    mule基本节点解释

    mule基本节点解释汇总 &lt;mule&gt; .... ....... ..... ... &lt;/mule&gt;

    Mule原理图和ESB设计

    Mule原理图和ESB设计Mule原理图和ESB设计Mule原理图和ESB设计Mule原理图和ESB设计

    mule-社区版-3.8.1.rar

    mule号称开源ESB的最好实现,一个以Java为核心的轻量级的消息框架和整合平台。它使得开发人员可以快速,简单的连接多个应用。 目前许多公司都使用了Mule,比如Walmart,HP,Sony,Deutsche Bank 以及 CitiBank等公司。...

Global site tag (gtag.js) - Google Analytics