一、WebSevice Proxy 简介
WebService Proxy 是ESB中最常见的使用场景之一,即通过 ESB 直接转发 WebService Client 的 SOAP 请求,并将 WebServcie
Provider 的 SOAP 响应转发给 WebService Client ,此时的ESB就是一个WebService Proxy。
二、WebSevice Proxy 在 Mule 中的产生背景
Mule3.0 新增了一些比较有亮点的新特性 ,其中包括“ pattern-based configuration ”这个概念。 pattern-based configuration
的主要目是将常用的功能模式化,达到简化配置文件的目的,主要包括四种模式: Simple Service 、 Web Service Proxy 、 Bridge 和
Validator。 Web Service Proxy Pattern 正是本文中提到的 WebService Proxy ,这里有关于它的更多介绍。
三、Web Service Proxy 的实现
1、WSProxy 的实现机制
WSProxy 实现机制的组件图如下所示
在Mule中WSProxy 由 3 个组件组成:
(1) MessageSource
它通过 MessageLister 接收或者产生 MuleMessage ,本实例中采用 DefaultInboundEndpoint 作为 MessageSource ,并通过
socket 接收 SOAP消息。这里有关于 MessageSource 的介绍。
(2) AbstractProxyRequestProcessor
负责处理MuleEvent,重写WSDL地址。其实现类有两个,分别是: StaticWsdlProxyRequestProcessor 和
DynamicWsdlProxyRequestProcessor ,本实例中采用的是 DynamicWsdlProxyRequestProcessor 。
(3) OutboundEndpoint
负责分发和接收SOAP消息。
2、WSProxy 运行期数据流图
运行期数据流图如下所示
运行期数据流:
(1)在 DefaultInboundEndpoint 中, HttpServerConnection 负责在 http://localhost:8080 上接收 SOAP 请求,
MessageProcessorChain 是一系列的 MessageProcessor ,对 MuleEvent 进行处理,主要包括:
ExceptionHandlingMessageProcessor 、 InboundEndpointMimeTypeCheckingMessageProcessor 、
InboundEndpointPropertyMessageProcessor 、 InboundLoggingMessageProcessor 等 MessageProcessor 。
(2)在 MessageProcessorChain 中,通过 DynamicWsdlProxyRequestProcessor 重写 WSDL 访问地址,即将 proxy WSDL 地址重新为
remote WSDL 地址。
(3)在 DefaultOutboundEndpoint 中,主要通过 HttpClientMessageDispatcher 调用 HttpClient 发送和接收 SOAP 消息。
Web Service Proxy
Web Service Proxy用来将客户端的WS请求直接转发至相应的远程WS服务端处理,并返回处理结果。Mule本身不做任何处理。
2.1 配置方式1
- 示例配置
<flow name="local2remote-ws">
<http:inbound-endpoint keep-alive="false" address="http://localhost:65000"
encoding="UTF-8" disableTransportTransformer="false" exchange-pattern="request-response" doc:name="HTTP"
doc:description="" />
<http:outbound-endpoint method="GET" keep-alive="false"
address="http://localhost:5050#[header:INBOUND:http.request]" responseTimeout="10000" encoding="UTF-8"
disableTransportTransformer="false" followRedirects="false" exchange-pattern="request-response"
doc:name="HTTP" doc:description="" />
</ flow >
- 说明
注意 outbound-endpoint 中 address 参数中的表达式。
- 测试方法
浏览器中通过“ http://localhost:65000/webservice/EchoService?wsdl ”(将内容复制,保存为 *.wsdl ),然后使用 SoapUI 测试。
2.2 配置方式2
- 示例配置
<pattern:web-service-proxy name="ws-proxy" inboundAddress="http://localhost:65082/services/Echo2"
outboundAddress="http://localhost:65082/services/Echo1?method=echo">
</pattern:web-service-proxy>
- 说明
Mule 为这种常见的场景提供了现成的模式,以简化配置。
- 测试方法
通过“ http://localhost:65082/services/Echo2?wsdl ”获取 wsdl 文件,然后使用 SoapUI 测试。2.3 配置方式3
<ws:proxy name="mule-Ws-Proxy" inboundAddress="http://localhost:8080/services/WeatherWS"
outboundAddress="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"/>
说明
Mule 为这种常见的场景提供了现成的模式,以简化配置。
- 测试方法
通过“ http://localhost:8080/services/WeatherWS?wsdl ”获取 wsdl 文件,然后使用 SoapUI 测试。 完整的mule配置文件:
<?xml version="1.0" encoding="UTF-8"?> <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:stdio="http://www.mulesoft.org/schema/mule/stdio" xmlns:ws="http://www.mulesoft.org/schema/mule/ws" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:pattern="http://www.mulesoft.org/schema/mule/pattern" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd http://www.mulesoft.org/schema/mule/ws http://www.mulesoft.org/schema/mule/ws/current/mule-ws.xsd http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.mulesoft.org/schema/mule/pattern http://www.mulesoft.org/schema/mule/pattern/current/mule-pattern.xsd http://www.mulesoft.org/schema/mule/stdio http://www.mulesoft.org/schema/mule/stdio/current/mule-stdio.xsd"> <flow name="local2remote-ws"> <http:inbound-endpoint keep-alive="false" address="http://localhost:65000" encoding="UTF-8" disableTransportTransformer="false" exchange-pattern="request-response"/> <http:outbound-endpoint method="GET" keep-alive="false" address="http://webservice.webxml.com.cn#[header:INBOUND:http.request]" responseTimeout="10000" encoding="UTF-8" disableTransportTransformer="false" followRedirects="false" exchange-pattern="request-response" /> </flow> <pattern:web-service-proxy name="ws-proxy-pattern" inboundAddress="http://localhost:65081/services/getRegionDataset" outboundAddress="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?op=getRegionDataset"> </pattern:web-service-proxy> <ws:proxy name="mule-Ws-Proxy" inboundAddress="http://localhost:8080/services/WeatherWS" outboundAddress="http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"/> </mule>
测试:
public class MuleProxyMain { public static void main(String[] args) { try { System.setProperty("java.endorsed.dirs","D:/android-workspace/MuleProxy/libs/endorsed"); System.out.println(System.getProperty("java.endorsed.dirs")); String configFile = "mule-ws-conf-service.xml"; String[] configFileArr = new String[] {configFile }; MuleContextFactory muleContextFactory = new DefaultMuleContextFactory(); MuleContext muleContext = muleContextFactory .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr)); muleContext.start(); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 首先,`logging.conf`是日志...
在本篇“Mule ESB 学习笔记(13)CSV数据文件到数据库”中,我们将探讨如何使用Mule ESB(Enterprise Service Bus,企业服务总线)处理CSV(Comma Separated Values,逗号分隔值)数据,并将其有效地导入到数据库中...
Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,易于连接各种服务和应用。Mule ESB支持多种传输协议、消息格式和数据转换,可以简化...
### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...
MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB的关键特性是允许不同的应用通讯,其作为运输系统在企业内或Internet应用间搬运数据。 Mule ESB 包含如下强大的能力: 服务创建和...
Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统之间的通信桥梁,实现数据和服务的互操作性,从而...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,专为构建可扩展、灵活和可靠的分布式应用程序而设计。Mule ESB 3.0是该平台的一个重要版本,提供了许多改进和新特性,使得它在处理企业...
MuleESB集成webservice+restful(sprintboot+mybatis+mysql)+activeMQ+javamail,五天的研究成果,集成了我所关注的点,希望有更多的朋友一起学习进步。
Mule ESB,全称Mule Enterprise Service Bus,是一个开源的企业服务总线系统,旨在促进不同应用程序和服务之间的数据交换和集成。Mule的核心设计是基于轻量级的Java平台,尤其是J2EE 1.4标准,使得它能够在各种企业...
### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...
《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...
《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的开发者设计。Mule ESB 是一款强大的集成平台,能够连接各种应用程序、数据源和服务,实现企业级的数据...
MuleESB支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他技术。图整体结构从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、...
MULE ESB(Message Broker Enterprise Service Bus)是一款强大的企业级服务总线,由Mulesoft公司开发,它提供了一个集成平台,用于连接各种应用程序和服务,实现数据的高效传输。MULE ESB-4.1社区版是Mulesoft为...
随着现代Web应用中JSON的广泛应用,Mule ESB提供了对JSON的原生支持。用户可以使用JSON强大的数据处理能力,以及XML Pretty Printer Transformer来美化或转换XML数据。 10. 自定义转换器和文档: 在集成复杂的系统...