在 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 端点。
我有一个向 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 端点。