加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

ESB invoke OBAM Webservice报错

发布时间:2020-12-17 00:58:39 所属栏目:安全 来源:网络整理
导读:使用ESB的business service调用OBAM的DataObjectOperationsByName web 服务,试图往Employees数据对象插入一条记录, 测试输入如下: bam:Insert xmlns:bam="http://xmlns.oracle.com/bam" ??? !--Optional:-- ??? bam:xmlPayload DataObject Name="Employees"

使用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即跳过不解析。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读