0
我对WS02 ESB相当陌生 - 我的公司几个月前实施了它。通过WSO2 ESB向WCF Proxy传递POST RESTful消息
目前,我试图把一个REST层放在WCF服务的顶部。我试图实现的用例是移动应用程序(iphone,android)通过RESTful xml向WCF服务提供位置数据的位置api。
我目前的数据流结构像移动应用程序 - > REST API - > ESB代理 - > WCF服务。
提供给在有效载荷中的REST端点的XML是这样的:
<Location Partner='{API Parnert Name}' Code='{API Partner Code}' Password='{API Partner Password}' Generated='2013-04-16T16:30:15Z'>
<Latitude>44.5881</Latitude>
<Longitude>-89.581248</Longitude>
<Accuracy>75.334</Accuracy>
<MobileDeviceUID>A1000017B8B437</MobileDeviceUID>
</Location>
为了路线此xml通过WSO2 ESB我已经创建了一个API和服务代理。 (一切都在我的机器上本地运行)
的API配置是这样的:
<api xmlns="http://ws.apache.org/ns/synapse" name="API_LOC" context="/WS1/Location">
<resource methods="POST">
<inSequence>
<log level="full" category="DEBUG"/>
<send>
<endpoint>
<address uri="http://localhost:8280/services/WS1LocationProxy/AddLocation" format="soap11"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
<log level="full"/>
</outSequence>
</resource>
</api>
我的代理配置是这样的:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="WS1LocationProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<log level="full" category="TRACE"/>
<property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
<send>
<endpoint>
<address uri="http://localhost:54270/WS1LocationService.svc"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="http://localhost:54270/WS1LocationService.svc?wsdl"/>
<parameter name="useOriginalwsdl">true</parameter>
<parameter name="interface">WS1LocationService</parameter>
<parameter name="serviceType">proxy</parameter>
<description></description>
</proxy>
我的主要问题是:如何我将传入的REST请求的POST负载转换为代理中WCF服务所需的SOAP信封。我一直无法找到这样一个过程的好例子。
谢谢你。这让我对正在通过的数据有了一些了解。从我可以告诉我将需要改变一些数据。进入REST api的传入SOAP消息与我尝试与之通信的WCF服务所需的SOAP消息不匹配。核心xml数据是相同的(在 节点内),但是需要将其包装在Action中以便WCF代理理解调用 - 除非我不正确地理解SOAP。 –
keannan5390
在序列中,您必须定义您的中介逻辑..有多少个样本,在ESB文档中,这对您有所帮助。 – Ratha
是的,我能够确定这一点。我大多完成了中介逻辑。 – keannan5390