项目中和其它系统交互是利用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是存在这个问题的。
分享到:
相关推荐
《深入解析Mule ESB源码》 Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 ...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
Mule 是一个基于ESB架构理念的消息平台。Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是...
Mule ESB支持实时监控和日志记录,帮助管理员跟踪应用性能,发现并解决问题。Mule Management Console和Mule Management API提供了一套全面的工具来管理和监控Mule部署。 **7. Mule运行时与Mule Cloud Connectors**...
本文将深入分析两个 Mule 的示例:Echo 和 HelloWorld,以理解其核心概念和工作原理。 首先,Echo 示例展示了如何在 Mule 中创建一个组件,该组件能够支持多种协议。在 Mule 中,组件是处理特定任务的基本单元,...
"Mule开发环境搭建和部署" Mule是当前流行的企业服务总线(Enterprise Service Bus, ESB),它提供了一个灵活、可扩展、高性能的集成平台。构建Mule开发环境是Mule应用程序的基础,以下将对Mule开发环境的搭建和...
4. **GRF文件解析** "list_map_to_pojo_2.grf", "list_map_to_pojo.grf", 和 "list_map_to_pojo_1.grf" 文件是Mule的图形化流程定义。它们描述了数据从Map到Java POJO(Plain Old Java Object)的转换过程。这些...
9. **版本管理**:升级或维护MULE ESB时,需要注意兼容性问题,同时需要备份现有应用,以免丢失配置或数据。 综上所述,MULE ESB-4.1企业版运行环境是企业级集成和API管理的重要组成部分,它为开发、部署和管理Mule...
Mule 企业版和社区版功能比较 Mule 企业版和社区版是两种不同的Mule版本,主要区别在于功能、安全性和可靠性等方面。本文将对Mule 企业版和社区版的功能进行比较,帮助用户选择合适的Mule版本。 一、功能框架 ...
Mule ESB(企业服务总线)是一款强大的集成平台,由Mulesoft公司开发,用于构建和管理企业级的应用程序网络。"mule-standalone-3.9.0.zip"是一个包含Mule ESB独立运行时环境的压缩包,版本为3.9.0。在本文中,我们将...
《Mule in Action》是关于Mule ESB的实战指南,该书深入浅出地介绍了如何使用Mule这一强大的企业服务总线(ESB)进行应用程序集成。Mule ESB以其用户基数庞大、文档详尽以及社区活跃而备受赞誉,是企业级集成解决...
根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,...
**MULE ESB-4.1社区版运行环境详解** MULE ESB(Message Broker Enterprise Service Bus)是一款强大的企业级服务总线,由Mulesoft公司开发,它提供了一个集成平台,用于连接各种应用程序和服务,实现数据的高效...
【Mule与MQ集成】是关于整合Mule ESB(企业服务总线)与消息中间件,如Apache ActiveMQ的开发文档。Mule是一个开源的ESB,它提供了一个平台来连接各种应用系统,实现数据交换和服务集成。而ActiveMQ则是Apache软件...
"Mule3.4入门学习" 本文将对Mule3.4进行入门学习,涵盖Mule环境搭建、Webservice的发布、JMS消息通信、ftp、File应用、协议转换等知识点。 一、Mule环境搭建 Mule环境的搭建需要JDK的支持,包括下载、安装、配置...
7. **监控与日志**:为了确保MULE应用的稳定运行,用户需要学会使用内置的监控工具和日志记录功能,以便跟踪应用性能和诊断问题。 8. **安全性和认证**:MULE 3.3支持多种安全机制,包括SSL/TLS加密、认证和授权。...
mule号称开源ESB的最好实现,一个以Java为核心的轻量级的消息框架和整合平台。它使得开发人员可以快速,简单的连接多个应用。 目前许多公司都使用了Mule,比如Walmart,HP,Sony,Deutsche Bank 以及 CitiBank等公司。...
《深入解析Mule ESB与SOA:架构、原理及应用》 在当前数字化转型的浪潮下,企业服务总线(ESB)和面向服务的架构(SOA)成为了连接和整合不同系统的关键技术。Mule ESB作为一款高性能、灵活的集成平台,为企业提供...
在IT行业中,Mule是一个强大的企业服务总线(ESB)和集成平台,它允许开发者构建和部署可扩展的应用程序和服务。"Mule实现路由分发"这一主题涉及到Mule如何处理消息的传递和定向,这在分布式系统和微服务架构中是至...