wso2esb 4.7.0中的回滚事务

时间:2014-01-21 07:07:45

标签: postgresql transactions wso2esb rollback

我正在使用wso2esb 4.7.0和postgresql并通过代理服务在同一数据库的两个不同表中插入值。这个插入操作正常工作。现在我的情况是如果我的第二次插入失败,首先插入应该回滚。我使用事务中介(回滚事务),但它无法正常工作。

代理配置和故障顺序如下:

 <target >
      <inSequence onError="myFaultHandler">
    <transaction action="new"/>
             <dbreport>
                <connection>
                   <pool>
                      <password>Youtility11</password>
                      <user>youtilitydba</user>
                      <url>jdbx:postgresql://localhost:5432/DB2</url>
                      <driver>org.postgresql.Driver</driver>
                   </pool>
                </connection>
                <statement>
                   <sql>
                            insert into table1(name,id) values(?,?)</sql>
                   <parameter xmlns:ns="http://org.apache.synapse/xsd"
                              expression="//name/text()"
                              type="VARCHAR"/>
                   <parameter xmlns:ns="http://org.apache.synapse/xsd"
                              expression="//id/text()"
                              type="VARCHAR"/>
                </statement>
             </dbreport>
             <log level="full">
                <property name="name" expression="get-property('name')"/>
                <property name="id" expression="get-property('id')"/>
             </log>
             <log level="full">
                <property name="text" value="Reporting to the DB2"/>
             </log>
             <dbreport>
                <connection>
                   <pool>
                      <password>Youtility11</password>
                      <user>youtilitydba</user>
                      <url>jdbx:postgresql://localhost:5432/DB2</url>
                      <driver>org.postgresql.Driver</driver>
                   </pool>
                </connection>
                <statement>
                   <sql>
                            insert into table2(firstname,lastname) values(?,?)</sql>
                   <parameter xmlns:ns="http://org.apache.synapse/xsd"
                              expression="//firstname/text()"
                              type="VARCHAR"/>
                   <parameter xmlns:ns="http://org.apache.synapse/xsd"
                              expression="//lastname/text()"
                              type="VARCHAR"/>
                </statement>
             </dbreport>
      </inSequence>
 </target>

和序列是:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="myFaultHandler">      
   <log level="full">
      <property name="message" value="**ROLLBACK**"/>
   </log>
  <transaction action="rollback"/>
</sequence>

这里,当我在第二个表中插入错误的记录时,它显示错误,但第一个表插入已完成。为什么回滚不起作用?让我知道..

提前致谢

0 个答案:

没有答案