我正在创建一个简单的 OpenESB 应用程序。在左边我有一个休息入站合作伙伴链接,在右边我调用了一个休息出站合作伙伴链接。我正在尝试将 json 传递给服务,但 openESB 会自动解析它并将其转换为 XML。
所以问题是我如何阻止 open esb 将 json 字符串转换为 xml,因为该服务不接受 xml 输入。
OpenESB 只能处理 XML。
对于consume-types=[ "application/json" ]
JSON 输入,会自动转换为 XML 以进行进一步处理,并在需要时调用任何外部合作伙伴链接。
对于produce-types=[ "application/json" ]
XML 数据,OpenESB 将其转换为 JSON。
为了达到同样的效果,您的 JSON 必须采用在转换为 XML 时生成有效 XML 的格式。例如,
转换为 XML 时的{"name":äbc"}
样子
。<name>abc</name>
JSON输入像,
{
"name1":äbc",
"name2":äbc"
}
好像
<name1>abc</name1>
<name2>abc</name2>
现在 name1 和 name2 XML 元素没有根元素,因此 OpenESB 无法处理它。
如果您将 JSON 输入作为
{
"someRootElement":{
"name1":äbc",
"name2":äbc"
}
}
,转换后的 XML 就像,
<someRootElement>
<name1>abc</name1>
<name2>abc</name2>
</someRootElement>
这应该适用于您的情况。:)
您的开放式 ESB 应用程序似乎配置为 xml 格式,因此如果您调用 json 服务,它会被转换为 xml。此链接可能能够帮助您在 ESB https://docs.wso2.com/display/ESB403/ESB+and+JSON中实现 JSON 。
您可以创建自己的组件,这将是处理 json 到 xml、xml 到 json 的最简单方法。如果需要更多详细信息,请告诉我。
如果您在 String 中有 JSON,则可以通过将其值设置为变量的以下属性来传递它。
<copy>
<from>'{"name" : "abc", "age" : "23"}'</from>
<to variable="RestOutboundIn" part = "part1"/>
</copy>
<copy>
<from variable="RestOutboundIn" part = "part1"/>
<to variable="RestOutboundIn" sxnmp:nmProperty="org.glassfish.openesb.rest.entity"/>
</copy>
注意:此属性在 OpenESB bpel 编辑器中不可用。您必须通过 XML 源设置它的值。