微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ESB invoke OBAM Webservice报错

使用ESB的business service调用OBAM的DataObjectOperationsByName web 服务,试图往Employees数据对象插入一条记录,

测试输入如下:

<bam:Insert xmlns:bam="http://xmlns.oracle.com/bam">
    <!--Optional:-->
    <bam:xmlPayload>
<DataObject Name="Employees" Path="/Samples">
  <Contents>
    <Row>
      <Column Name="Salesperson" Value="Greg Jinyn" />
      <Column Name="Sales Area" Value="northeast" />
      <column Name="Sales Number" Value="5671" />
    </Row>
  </Contents>
</DataObject>
</bam:xmlPayload>
</bam:Insert>

 

结果遇到错误:

BAM-06147: DataObjectOperations Web 服务的 XML 有效负载无效; nested exception is:
java.rmi.remoteexception: BAM-06147: DataObjectOperations Web 服务的 XML 有效负载无效; nested exception is:
java.lang.RuntimeException: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unkNown-source}]: [2,0]

仔细研究后发现,<bam:xmlPayload>String</bam:xmlPayload>,传入的内容为字符串,而上面的demo会让xml解析器认为是新的xml元素非string,因此可通过encode解决该问题。

解决方法有两种,一、xml通常认为“<”是新的xml元素的开始,对于少量的可以简单的将“<”替换成"&lt;"即可;

二:当<bam:xmlPayload>间需要包含大量的xml内容时,可使用<![CDATA[ ]]>的方式将内容包含进来,xml解析时遇到CDATA即跳过不解析。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐