微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mule ESB Configuration Patterns 配置摘要

为了节省时间,就不翻译了,摘抄重点总结下,本文大部分摘抄自Mule ESB官网入门教程 Guide.pdf这本书中.

常用的配置定式简介

   Simple Service  : Exposes JAX-WS annotated components as SOAP web services. Exposes JAX-RS annotated beans as RESTful components.Can also handle JAXB,XML and raw content with simple POJO components.

   WebService Proxy : Proxies remote web services. Can perform transformations on the SOAP envelope. Can rewrite or redirect remote WSDLs to localones.

   Bridge : Establishes a direct conduit between an inbound endpoint and an outbound endpoint. Supports request-response and one-way bridging. Can perform transformations. Supports transactional bridging of inbound to outbound.

   Validator : Validates inbound messages against a defined acceptance filter. Returns an ACK or NACK response synchronously and dispatches valid messages asynchronously.

下面只总结 simple service 和 webservice proxy 两种常用的配置定式 的常用配置

   Simple service : 把组件发布成 简单的mule service,包括webservice

   (1) 把pojo定义成simple service

<pattern:simple-service name="maths-service"
address="vm://maths.in"
component-class="org.mule.tck.services.SimpleMathsComponent" />

<!-- 使用引用 -->
<pattern:simple-service name="maths-service"
endpoint-ref="maths-service-endpoint"
component-ref="math-component" />

<!-- 使用transformers -->
<pattern:simple-service name="byte-array-massager"
address="vm://bam.in"
transformer-refs="byte-array-to-string append-bar"
responseTransformer-refs="append-baz string-to-byte-array"
component-class="org.mule.component.simple.EchoComponent" />

<!-- 使用子元素 -->



<pattern:simple-service name="maths-service"component-class="org.mule.tck.services.SimpleMathsComponent"><vm:inbound-endpoint path="maths.in"exchange-pattern="request-response" /><custom-exception-strategy class="com.acme.AcmeExceptionStrategy" /></simple-service>
<!-- 使用Inheritance -->
<pattern:simple-service name="global-exception-strategy"
abstract="true">
<custom-exception-strategy class="com.acme.AcmeExceptionStrategy" />
</pattern:simple-service>
<pattern:simple-service name="inherited-exception-strategy"
parent="global-exception-strategy"
address="vm://maths.in"
component-class="org.mule.tck.services.SimpleMathsComponent" />

<!--发布成JAX-WS Service-->
<pattern:simple-service name="weather-forecaster-ws"
address="http://localhost:6099/weather-forecast"
component-class="org.mule.test.integration.tck.WeatherForecaster"
type="jax-ws" />

<!--发布成JAX-RS Service-->



<pattern:simple-service name="weather-report-rsc"address="http://localhost:6099/rest"component-class="org.mule.test.integration.tck.WeatherReportResource"type="jax-rs" />




  (2)JAXB 支持配置

<pattern:simple-service name="weather-jaxb-consumer"
address="vm://weather-consumer.in"
component-class="org.mule.test.integration.tck.WeatherReportConsumer" />

对应的WeatherReportConsumer类代码,注意:it is required that @Payload,a Mule-specific annotation,is used on the component:

package org.mule.test.integration.tck;
import org.mule.api.annotations.param.Payload;
public class WeatherReportConsumer
{
public String consume(@Payload WeatherReportType weatherReport)
{
return weatherReport.report;
}
}

   (3) XPath 支持配置

<pattern:simple-service name="weather-xpath-consumer"
address="vm://weather-xpath-consumer.in"
component-class="org.mule.test.integration.tck.WeatherReportXpathConsumer" />

对应的WeatherReportXpathConsumer类代码,注意: a Mule annotation,@XPath in this case,is needed for this to work

package org.mule.test.integration.tck;
import org.mule.api.annotations.expression.XPath;
public class WeatherReportXpathConsumer
{
public String consume(@XPath(value = "/weatherReport/report") String report)
{
return report;
}
}

    Web Service Proxy Pattern :  Web Service Proxy在安全和审查等情形下是一种非常通用的实践,它允许用非常简短和简单的方式去配置一个proxy.

    核心特性:
         add or remove HTTP headers,添加或移除http协议头
         transform the SOAP envelope (body or header) to add or remove specific entries,转换soap请求信息,增加或移除特殊条目
         rewrite remote WSDLs so they appear to bind to services inside a corporate firewall,重写wsdl文件,从而指向防火墙内部的service
         introduce custom error handling. 错误处理

    常用配置

<!--Web Service Proxy-->
<pattern:web-service-proxy name="weather-forecast-ws-proxy"
inboundAddress="http://localhost:8090/weather-forecast"
outboundAddress="http://ws.acme.com:6090/weather-forecast" />

<!--Proxy with Transformers-->
<pattern:web-service-proxy name="weather-forecast-ws-proxy-transformers"
inboundAddress="http://localhost:8090/weather-forecast"
transformer-refs="zip-code-transformer add-credentials-transformer"
responseTransformer-refs="weather-code-transformer"
outboundEndpoint-ref="target-ws-endpoint" />

<!--Child Elements 子元素 -->
<pattern:web-service-proxy name="weather-forecast-ws-proxy">
<http:inbound-endpoint address="http://localhost:8090/weather-forecast" />
<http:outbound-endpoint address="http://ws.acme.com:6090/weather-forecast" />
<custom-exception-strategy class="com.acme.AcmeExceptionStrategy" />
</pattern:web-service-proxy>

<!--Inheritance 继承关系 -->
<pattern:web-service-proxy name="abstract-ws-proxy-zipcode-changer"
abstract="true"
transformer-refs="zip-code-transformer add-credentials-transformer"
responseTransformer-refs="weather-code-transformer" />
<pattern:web-service-proxy name="weather-forecast-ws-proxy"
parent="abstract-ws-proxy-zipcode-changer">
<http:inbound-endpoint address="http://localhost:8090/weather-forecast" />
<http:outbound-endpoint address="http://ws.acme.com/weather-forecast" />
</pattern:web-service-proxy>

<!--Remote WSDL Redirection 以远程方式重定向wsdl文件-->
<pattern:web-service-proxy name="weather-forecast-ws-proxy"
inboundAddress="http://localhost:8090/weather-forecast"
outboundAddress="http://ws.acme.com:6090/weather-forecast"
wsdlLocation="http://ws.acme.com:6090/wsdl/weather-forecast" />

<!--File WSDL Redirection  以指定文件方式重定向wsdl文件-->
<pattern:web-service-proxy name="weather-forecast-ws-proxy"
inboundAddress="http://localhost:8090/weather-forecast"
outboundAddress="http://ws.acme.com:6090/weather-forecast"
wsdlFile="path/to/correct/weather-forecaster.wsdl" />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐