如何在Open ESB

时间:2015-07-09 10:41:50

标签: json xml rest bpel open-esb

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

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

4 个答案:

答案 0 :(得分:1)

OpenESB只能处理XML。

对于consume-types=[ "application/json" ],JSON输入会自动转换为XML以供进一步处理,并在需要时调用任何外部合作伙伴链接。

对于produce-types=[ "application/json" ],OpenESB将XML数据转换为JSON。

要实现相同的目标,您的JSON必须采用转换为XML格式时生成有效XML的格式。 例如,     {"name":äbc"}看起来像     转换为XML时<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>

这适用于您的情况。 :)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果你在字符串中有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源设置它的值。

答案 3 :(得分:0)

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