2013-12-23 37 views
0

我正在使用wso2esb 4.8.0,并且通过wso2esb文档中给出的这个场景。我希望将记录从第一个数据库复制到第二个数据库,只要我删除它们从第一个数据库。但是当我把重复的记录它既不应该从第一个删除也不能插入第二个。wso2esb中的事务仲裁4.8.0

我的代理服务:

<?xml version="1.0" encoding="UTF-8"?> 
<proxy xmlns="http://ws.apache.org/ns/synapse" 
     name="Transaction_mediator" 
     transports="https,http" 
     statistics="disable" 
     trace="disable" 
     startOnLoad="true"> 
    <target> 
     <inSequence> 
     <property name="name" 
        expression="//name/text()" 
        scope="default" 
        type="STRING"/> 
     <property name="id" 
        expression="//id/text()" 
        scope="default" 
        type="STRING"/> 
     <property name="price" 
        expression="//price/text()" 
        scope="default" 
        type="STRING"/> 
     <transaction action="new"/> 
     <log level="full"> 
      <property name="text" value="Reporting to the DB1"/> 
     </log> 
     <dbreport useTransaction="true"> 
      <connection> 
       <pool> 
        <dsName>DS1</dsName> 
       </pool> 
      </connection> 
      <statement> 
       <sql> 
      delete from c1 where name=?</sql> 
       <parameter expression="get-property('name')" type="VARCHAR"/> 
      </statement> 
     </dbreport> 
     <log level="full"> 
      <property name="text" value="Reporting to the DB2"/> 
     </log> 
     <dbreport useTransaction="true"> 
      <connection> 
       <pool> 
        <dsName>DS2</dsName> 
       </pool> 
      </connection> 
      <statement> 
       <sql> 
       INSERT into c1 values (?,?,?)</sql> 
       <parameter expression="get-property('name')" type="VARCHAR"/> 
       <parameter expression="get-property('id')" type="INTEGER"/> 
       <parameter expression="get-property('price')" type="INTEGER"/> 
      </statement> 
     </dbreport> 
     <transaction action="commit"/> 
     <send/> 
     </inSequence> 
     <outSequence> 
     <log level="full"/> 
     <send/> 
     </outSequence> 
    </target> 
    <description/> 
</proxy> 

它的工作,但是,当我把重复记录。当时它从第一删除记录,但没有插入第二database.What应该怎么办发生了错误?是他们的任何解决方案?让我知道。

+0

你能在这里粘贴碳日志吗? –

+0

其实它工作,但如果我把重复记录,然后它从第一个表中删除,但不插入第二个表中,并显示错误,如:DBReportMediator错误执行插入语句:插入到数据源的c1值(?,?,?):DS2 org.postgresql.util.PSQLException:错误:重复键值违反唯一约束“c1_pkey” 详细信息:键(名称)=(SUN)已经存在。 – user3129056

回答

0

使用JDBC的事务调解器存在问题,并且已在wso2 esb issue tracker中报告过。因此,这可能会在功能版本中得到解决。