如何在WSO2中使用事务

时间:2014-09-08 07:16:56

标签: sql transactions wso2 wso2esb wso2-am

我试图通过WSO2将数据插入到sql中时使用事务。但交易无效。 我正在写下示例代码。

<sequence xmlns="http://ws.apache.org/ns/synapse" name="InsertOrderSequence" onError="myFaultHandler">
   <log level="full"></log>
   <transaction action="new"></transaction>
<dbreport useTransaction="true">
  <connection>
     <pool>
        <dsName>jdbc/sqlserver</dsName>
     </pool>
  </connection>
  <statement>
      <sql>
           insert query 1
      </sql>
     </statement>
     <statement>
        <sql>
             insert query 2
        </sql>
     </statement>
   </dbreport> 
  <transaction action="commit"></transaction>
  </sequence>

  <sequence xmlns="http://ws.apache.org/ns/synapse" name="myFaultHandler">
    <transaction action="rollback"></transaction>
  </sequence>

如果第一个表成功插入并且第二个表成功发生,则应该进行该时间回滚,但回滚不起作用,并且数据插入发生在第一个表中。

请让我知道我在哪里做错了。

1 个答案:

答案 0 :(得分:0)

db报告介体不支持数据库的批量插入和相关写入操作。

由于这是对单个数据库表的批量插入,因此您必须使用数据服务功能才能完成此操作。

在WSO2中,数据服务提供了批量插入功能,它为您提供了完成此任务的功能。

因此,您可以在ESB上安装数据服务功能,并使用批量插入选项创建数据服务,如[1]中所示。然后从ESB调用数据服务。

[1] http://pushpalankajaya.blogspot.com/2014/02/wso2-dss-batch-insert-sample-end-to-end.html