最近我遇到了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)。
非常感谢你的帮助,我希望看到这篇文章的每一天都有美好的一天:)
答案 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>