WSO2 ESB:日志,并且将来自RDF REST服务响应返回给SOAP(WSO2 ESB: log

2019-11-01 15:20发布

我工作的WSO2 ESB POC为我的公司,这包括通过ESB上的SOAP端点露出内部RESTful服务。 我读过所有与SOAP-REST调解线程和博客文章,但还是没能找到答案。 我的RESTful服务返回“应用程序/ RDF + XML”的消息格式。 这里是我的序列:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="CQProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <send>
            <endpoint>
               <address uri="http://<MYURL>/cqweb/oslc/repo/eraprototype/db/CQT_T/simpleQuery/16783484?oslc.select=dcterms:title,cq:CM_Label,dcterms:type,cq:Assigned_To,oslc_cm:status,cq:AutoDeployment,cq:SentToEADS_By&oslc.where=oslc:shortTitle=CQT_T00000131" format="get"/>
               <property xmlns:ns="http://org.apache.synapse/xsd" name="Authorization" expression="fn:concat('Basic ', base64Encode('user:password'))" scope="transport"/>
               <property name="OSLC-Core-Version" value="2.0" scope="transport"/>
               <property name="Accept" value="application/rdf+xml" scope="transport"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
   <publishWSDL key="gov:/services/cqproxy/CQProxy.wsdl">
      <resource location="CQProxy.xsd" key="gov:/services/cqproxy/CQProxy.xsd"/>
      <resource location="eads_ws.xsd" key="gov:/services/eads_ws/eads_ws.xsd"/>
   </publishWSDL>
   <description></description>
</proxy>

我能够成功地将请求发送到REST式服务。 但是我OUT序列无法处理“应用/ RDF + XML”的回应。 日志显示以下错误:

INFO {org.apache.axis2.builder.BuilderUtil} -  OMException in getSOAPBuilder {org.apache.axis2.builder.BuilderUtil}
org.apache.axiom.soap.SOAPProcessingException: First Element must contain the local name, Envelope , but found RDF


两个问题:
1.我如何才能登录该从REST服务接收Axis2的SOAP应用改造前的实际响应? 我的日志中介只生成空的SOAP信封。

INFO {org.apache.synapse.mediators.builtin.LogMediator} -  To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:4c06fcb9-4e45-4fb3-bc5a-4350e3d86533, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body/></soapenv:Envelope> {org.apache.synapse.mediators.builtin.LogMediator}


2.如何从RDF + XML回SOAP格式转换? 我应该使用XSLT调解员在这个失序?

感谢您的帮助!

Answer 1:

我写了一个简单的NodeJS服务发送一个RDF格式的消息。 这里是什么样子,当我调用它采用先进的REST客户端浏览器扩展程序等。

然后,我在ESB 4.5.1创建代理服务。 这里是我的代理服务配置,

<proxy xmlns="http://ws.apache.org/ns/synapse" name="TestProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="full"/>
         <send>
            <endpoint>
               <address uri="http://localhost:8080/" format="pox"/>
            </endpoint>
         </send>
         <log level="full"/>
         <drop/>
      </inSequence>
      <outSequence>
         <log level="full"/>
         <send/>
      </outSequence>
   </target>
   <description></description>
</proxy>

然后我用tryIt工具发送XML消息到这个代理服务。 我使用的是日志中介登录传入的XML消息。

在失序,我再次使用日志中介,我可以看到RDF得到记录在那里。

什么是你想出来这与ESB的版本?



文章来源: WSO2 ESB: log and convert response from the RDF REST service back to SOAP