在 JBoss Fuse on JBoss EAP 6.4 上为 SOAP 代理创建 Camel Route 的简单指南

Simple Man Guide to create a Camel Route in JBoss Fuse on JBoss EAP 6.4 for a SOAP Proxy

我有一个向 public 公开的 Web 服务,我想使用 Fuse 作为外部请求的前端来隐藏它。我想我必须配置一个 Camel 代理来实现它。

在开发环境(Windows 7 x64 机器)中,我已经成功安装并测试了 jdk-8u111-windows-x64、apache-maven-3.3。 9、jboss-eap-6.4.0-installer, fuse-eap-installer-6.3.0.redhat-187 and devstudio-integration-stack-9.0.2.GA-standalone-installer,我正在使用 JBoss Dev Studio 9.1.0.GA.

目前我正在尝试弄清楚如何使用 JBoss Developer Studio 9.1.0.GA 来使用 public Web 服务 (http://www.webservicex.net/country.asmx) 以及之后, 在我的本地独立 Fuse 服务器中将其部署为具有不同名称的全新 Web 服务(当然与原始服务完全相同)。

我花了大约一两个星期的时间查看了大量的博客、文章、Red Hat 教程和视频,但我只是放弃了这个。很难吗?

使用 Camel 代理实际的 Web 服务非常简单。

见下文(考虑来自您上面提到的端点的国家/地区 Web 服务),您可以使用最少的路由实现此目的。但是,根据您的用例,例如您是否需要进一步验证、执行一些处理逻辑或在中介期间进行一些转换,您也可以这样做。

但至少需要将自定义端点的请求代理到实际端点:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
       xsi:schemaLocation="
       http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
       http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">


    <!-- CurrencyService Proxy Endpoint -->
    <cxf:cxfEndpoint id="currencyServiceProxyEP" xmlns:c="http://www.webserviceX.NET"  
        endpointName="c:countrySoap" serviceName="c:country"
        loggingFeatureEnabled="true" address="/CurrencyService/MyGatewayProxy" wsdlURL="WSDL/CountryService.wsdl">
        <cxf:properties>
            <entry key="dataFormat" value="MESSAGE" /> 
        </cxf:properties>
    </cxf:cxfEndpoint>


    <!-- CurrencyService Actual Endpoint -->
    <cxf:cxfEndpoint id="currencyServiceActualEP" xmlns:c="http://www.webserviceX.NET"  
        endpointName="c:countrySoap" serviceName="c:country"
        loggingFeatureEnabled="true" address="http://www.webservicex.net/country.asmx" wsdlURL="WSDL/CountryService.wsdl">
        <cxf:properties>
            <entry key="dataFormat" value="MESSAGE" /> 
        </cxf:properties>
    </cxf:cxfEndpoint>




  <camelContext xmlns="http://camel.apache.org/schema/blueprint" id="CountryService-Context">

        <route id="proxyEPRoute">

            <from uri="cxf:bean:currencyServiceProxyEP" />          

            <!-- Do Extra validation of payload, additional routing, processing, transaformation, mediation etc.. depending on your use case here.. -->

            <to uri="cxf:bean:currencyServiceActualEP"/>


        </route>

  </camelContext>

</blueprint>

请注意:我将 Camel 路由与 Blueprint DSL 和 Camel CXF 一起用于公开和使用 SOAP 端点。