WAS与低版本WebLogic进行WebService通信问题

原有两台WebLogic v6.1上面运行的WS应用,改成WebLogic v6.1作为服务提供方,WebSphere V6作为服务接收方后,在WebSphere接收到返回信息时,抛出错误:
00000032 SystemErr R WebServicesFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultString: org.xml.sax.SAXParseException: 内容中不得出现字符序列“]]>”,除非它用于标记 CDATA 部分的结尾。 Message being parsed: <?xml version='1.0' encoding='UTF-8'?><SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/' xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance' xmlns:xsd='http://www.w3.org/1999/XMLSchema'><SOAP-ENV:Body><ns0:unifiedCall20Response xmlns:ns0='urn:local' SOAP-ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'><return xsi:type='xsd:string'>&lt;?xml version="1.0" encoding="GB2312"?>
&lt;RESPONSE>
&lt;ROUTE>
&lt;VERSION>2.0&lt;/VERSION>
&lt;OBJ_RANGE>01&lt;/OBJ_RANGE>
&lt;RET_FLAG>Y&lt;/RET_FLAG>
&lt;/ROUTE>
&lt;DISPATCHER>
&lt;VERSION>2.0&lt;/VERSION>
&lt;/DISPATCHER>
&lt;CONTENT>
&lt;COMMAND>QUERY&lt;/COMMAND>
&lt;RET_FORMAT>VN,CN,VL,CT&lt;/RET_FORMAT>
&lt;DATA APPID="A001">
&lt;STATE>1/1&lt;/STATE>
&lt;R>
&lt;PHOTO VN="PIC">&lt;![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/2wOckkZrL(以下略)
(以上略)orODSv3Sknd5i5JPrzWx9s8Qf8AQN/8fX/GqbZO/U//2Q==]]>&lt;/PHOTO>
&lt;/R>
&lt;/DATA>
&lt;/CONTENT>
&lt;/RESPONSE>
</return></ns0:unifiedCall20Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
faultActor: null
faultDetail:

原因:

究其原因,因为发送的XML中包含<CDATA>标签,而在发送前WebLogic将该段XML放入到SOAP时,该段XML”<”全部被转义成”&lt;”,但”>”却没有被转义,导致WebSphere在接收之后解析该段XML时就会抛出Exception。但如果该段XML不含有<CDATA>字样时不会有任何转义现象出现。

解决方案:

因为当时无法更换发送端的WebLogic服务器,而问题出现在那边,因此只好对发送出来的XML进行编码(如Base64),使发送时的内容不再是含有CDATA的XML,而只是一串特殊的字符串,以此“蒙骗”WebLogic进行SOAP打包时候的问题。WebSphere方接收后应用程序需要对该特殊字符串进行解码再做原有的XML解析。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值