为了节省时间,就不翻译了,摘抄重点总结下,本文大部分摘抄自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] 举报,一经查实,本站将立刻删除。