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

Mule ESB 学习笔记(11)Web Service Proxy

阅读更多

一、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 实现

1WSProxy 的实现机制


WSProxy
实现机制的组件图如下所示




MuleWSProxy 3 个组件组成:


(1) MessageSource

   
它通过 MessageLister 接收或者产生 MuleMessage ,本实例中采用 DefaultInboundEndpoint 作为 MessageSource ,并通过

socket 接收 SOAP消息。这里有关于 MessageSource 的介绍。


(2) AbstractProxyRequestProcessor

   
负责处理MuleEvent,重写WSDL地址。其实现类有两个,分别是: StaticWsdlProxyRequestProcessor

DynamicWsdlProxyRequestProcessor ,本实例中采用的是 DynamicWsdlProxyRequestProcessor


(3) OutboundEndpoint

   
负责分发和接收SOAP消息。

2WSProxy 运行期数据流图

    
运行期数据流图如下所示

 


运行期数据流:


(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();
        }
    
    }
   

}

 

分享到:
评论
1 楼 gao911111 2014-02-26  
对于这种代理方式,如何实现安全认证呢?如何加入《ws-security》进行安全验证???

相关推荐

    mule -esb 源码

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 首先,`logging.conf`是日志...

    Mule ESB 学习笔记(13)CSV数据文件到数据库

    在本篇“Mule ESB 学习笔记(13)CSV数据文件到数据库”中,我们将探讨如何使用Mule ESB(Enterprise Service Bus,企业服务总线)处理CSV(Comma Separated Values,逗号分隔值)数据,并将其有效地导入到数据库中...

    Mule ESB手册-中文版

    Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,易于连接各种服务和应用。Mule ESB支持多种传输协议、消息格式和数据转换,可以简化...

    ESB原理及Mule ESB实践

    ### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...

    MULE ESB-4.1企业版运行环境

    MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...

    MuleEsb开源框架简介.pdf

    Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...

    mule IDE (mule ESB)

    Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB的关键特性是允许不同的应用通讯,其作为运输系统在企业内或Internet应用间搬运数据。 Mule ESB 包含如下强大的能力: 服务创建和...

    MuleESB帮助文档

    Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统之间的通信桥梁,实现数据和服务的互操作性,从而...

    MuleESB_3.0_中文教程

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,专为构建可扩展、灵活和可靠的分布式应用程序而设计。Mule ESB 3.0是该平台的一个重要版本,提供了许多改进和新特性,使得它在处理企业...

    MuleESB集成webservice+restful(sprintboot+mybatis+mysql)+activeMQ+javamail

    MuleESB集成webservice+restful(sprintboot+mybatis+mysql)+activeMQ+javamail,五天的研究成果,集成了我所关注的点,希望有更多的朋友一起学习进步。

    mule esb 的简单介绍

    Mule ESB,全称Mule Enterprise Service Bus,是一个开源的企业服务总线系统,旨在促进不同应用程序和服务之间的数据交换和集成。Mule的核心设计是基于轻量级的Java平台,尤其是J2EE 1.4标准,使得它能够在各种企业...

    MuleESB3.0中文教程

    ### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...

    mule esb 项目 例子 入门

    Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...

    mule esb cookbook 随书源码

    《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...

    mule esb开发手册

    《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的开发者设计。Mule ESB 是一款强大的集成平台,能够连接各种应用程序、数据源和服务,实现企业级的数据...

    MuleESB学习笔记

    MuleESB支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他技术。图整体结构从上图可见,Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、...

    MULE ESB-4.1社区办运行环境

    MULE ESB(Message Broker Enterprise Service Bus)是一款强大的企业级服务总线,由Mulesoft公司开发,它提供了一个集成平台,用于连接各种应用程序和服务,实现数据的高效传输。MULE ESB-4.1社区版是Mulesoft为...

    mule ESB 3 user guider

    随着现代Web应用中JSON的广泛应用,Mule ESB提供了对JSON的原生支持。用户可以使用JSON强大的数据处理能力,以及XML Pretty Printer Transformer来美化或转换XML数据。 10. 自定义转换器和文档: 在集成复杂的系统...

Global site tag (gtag.js) - Google Analytics