1

我正在创建一个简单的 OpenESB 应用程序。在左边我有一个休息入站合作伙伴链接,在右边我调用了一个休息出站合作伙伴链接。我正在尝试将 json 传递给服务,但 openESB 会自动解析它并将其转换为 XML。

所以问题是我如何阻止 open esb 将 json 字符串转换为 xml,因为该服务不接受 xml 输入。

4

4 回答 4

1

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>

这应该适用于您的情况。:)

于 2015-07-21T06:01:27.027 回答
0

您的开放式 ESB 应用程序似乎配置为 xml 格式,因此如果您调用 json 服务,它会被转换为 xml。此链接可能能够帮助您在 ESB https://docs.wso2.com/display/ESB403/ESB+and+JSON中实现 JSON 。

于 2015-07-13T19:43:06.367 回答
0

您可以创建自己的组件,这将是处理 json 到 xml、xml 到 json 的最简单方法。如果需要更多详细信息,请告诉我。

于 2018-12-18T07:52:12.530 回答
0

如果您在 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 源设置它的值。

于 2018-02-14T14:14:26.617 回答