【问题描述】

场景描述:BPS独立部署,所有API调用只能使用webservice。
    问题描述:在调用WebService分布式事务
API(http://host:port/default/WSGlobalTransactionManagerService?wsdl)中的开启
分布式事务commit和rollback方法时系统异常。
    帮助中的描述如下:
 
用soapui调用事务开始成功后取得返回的事务ID后,直接调用提交或回滚接口都报异常(调用回滚或提交接口时,已经按说明添加了soap头),如下。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>Error in extracting message properties</faultstring>
         <detail>
            <Exception>org.apache.axis2.AxisFault: Error in extracting message properties
 at org.apache.rampart.handler.RampartReceiver.invoke(RampartReceiver.java:92)
 at org.apache.axis2.engine.Phase.invoke(Phase.java:292)
 at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:212)
 at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:132)

【解答】

调用commit方法调试思路如下,可依此尝试调试调用rollback方法:

1、首先在soapui中调出能够调通的报文;

2、根据soapui中报文里header的结构,创建xsd文件(可先创建实体,将xsd文件拿出进行编辑),构造出所需的命名空间以及参数结构

3、在eos中通过webservice构件调用commit服务,打出发出的报文,将报文放到soapui中进行调试,和之前soapui中正常的报文对比,删除或添加一些可疑的属性,等调通后再依此报文调整xsd文件