WSO2 REST代理使用SOAP而不是REST回复

时间:2016-10-28 07:46:13

标签: rest soap wso2 esb

最近我遇到了wso2 esb的问题,我无法解决(也许是一个错误)。我将尽可能清楚地解释它。

我将wso2 ESB与rest代理一起使用,以便从前端应用程序与后端Rest服务进行通信。

我用这样的端点定义了一个rest代理,它工作正常:

<endpoint>
         <address uri="http://127.0.0.1:8099/DummyRestServiceWSO2"/>
</endpoint>

但我们的目标是将WSO2 esb集成到openshift环境中的容器中。在openshift中,ip是动态设置的,但可以通过系统环境变量访问。所以我尝试使用标头标签动态解决我的端点:

<endpoint>
         <default/>
</endpoint>
<inSequence>
<script language="js">mc.setProperty("url",java.lang.System.getenv("HOST_IP"));</script>
<property name="service_url" expression="fn:concat(get-property(url),'/DummyRestServiceWSO2')"/>
<header name="To" expression="get-property('service_ep')"/>
<send/>
</inSequence>

HOST_IP定义为:http://127.0.0.1:8099

由于我做了这个更改,我对后端休息服务的调用仍然正常,但对调用者(前端)的响应现在格式化为soap(我试图绘制问题,see attachment)。

非常感谢你的帮助,我希望看到这篇文章的每一天都有美好的一天:)

1 个答案:

答案 0 :(得分:0)

如果通过&#34; REST&#34;你是说&#34; JSON&#34;格式,只需在将响应发送回客户端之前定义此属性:

<property name="messageType" value="application/json" scope="axis2"/>

application/xml用于普通xml(无SOAP信封/正文)

您还可以在send mediator中使用默认端点并定义格式:

<send>
  <endpoint>
    <default format="rest">
      <timeout>
        <responseAction>fault</responseAction>
      </timeout>
    </default>
  </endpoint>
</send>