事务一致性配置

UniEAP Report填报模块通过使用UniEAP事务管理组件,不但能够保证填报报表中多数据库多数据集的回填事务一致性,而且当您自行实现更新辅助接口将回填与业务数据同时更新时,在这种事务多层嵌套场景下,仍然能够保证同业务数据间的事务一致性。但前提是遵守UniEAP事务管理组件的规范以及配置。

本章将详细介绍事务一致性的相关配置。

1 UniEAP事务管理组件配置

在Web应用的如下文件WEB-INF\conf\unieap\transaction\traxnsaction.xml中配置事务管理实现类,您可以直接使用UniEAP事务管理组件提供的事务管理实现类,也可以自己实现继承指定接口的事务管理实现类,配置文件内容如下,如需了解UniEAP事务管理组件的更多内容,请参见《UniEAP事务管理组件手册》。

<?xml version="1.0" encoding="UTF-8"?>
<transaction-policy xmlns="www.neusoft.com/unieap/transaction">
    <transaction name="default">
    <transactionManager-class>com.neusoft.unieap.transaction.jdbctransaction.JdbcTransactionManager</transactionManager-class>
    </transaction>
        <transaction name="nonnesttransaction">
    <transactionManager-class>com.neusoft.unieap.transaction.nonnest.NonNestTransactionManager</transactionManager-class>
    </transaction>
        <transaction name="jdbcTransaction">
    <transactionManager-class>com.neusoft.unieap.transaction.jdbctransaction.JdbcTransactionManager</transactionManager-class>
    </transaction>
        <transaction name="jtaTransaction">
    <transactionManager-class>com.neusoft.unieap.transaction.jta.JtaTransactionManager</transactionManager-class>
        <transaction-name>UserTransaction</transaction-name>
        <transaction-provider>Weblogic</transaction-provider>
    </transaction>
    </transaction-policy>

2 数据集配置文件的配置方法

首先确定在WEB-INF\conf\unieap\report\report-engine-config.properties文件中的数据库访问工厂设置为

Com.neusoft.report.engine.util.dataaccess.DataAccessFactory=
com.neusoft.report.engine.util.dataaccess.JDBCDataAccessFactory

假设一张报表有三个SQL数据集ds1、ds2、ds3,ds1数据集来自于数据源northwind, ds2数据集来自于数据源sample1,ds3来自于数据源sample2,如果需要保证这张填报报表的ds1、ds2数据集在同一个事务内,而不需要保证ds3和ds1、ds2在同一个事务内,这种情况下则配置如下:

在Web应用的如下文件WEB-INF\conf\unieap\report\datasource.xml中,首先找到Category Name="rdb-sql"的节点,分别在Name属性值为northwind、sample1的DataSource子节点下新增属性TransactionName,值为在traxnsaction.xml中配置的transaction name,在本示例配置文件中,为default。而sample2数据源不需要保证事务一致性,则不配置TransactionName,当不配置时,该数据源的所有数据集更新,不在事务管理范围内。

需要特别说明的是,配置为相同TransactionName的所有数据源在同一个事务中,而不同的TransactionName并不在同一个事务中。没有配置TransactionName的数据源,不在统一事务管理的范围内。

<?xml version="1.0" encoding="UTF-8"?>
<DataSourceManager xmlns="http://www.neusoft.com/report/datasource"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.neusoft.com/report/datasource">
    <Category Name="rdb-sql" Caption="关系数据库SQL数据源"
    SourceClass="com.neusoft.unieap.dataset.datasource.impl.DrmDataSource"
QuerierClass="com.neusoft.unieap.dataset.executer.jdbc.JDBCDataSetExecuter">
    <DataSource Name="northwind" TransactionName="default" Caption="Report样例库"></DataSource>
    <DataSource Name="sample1" TransactionName="default" Caption="sample1样例"></DataSource>
    <DataSource Name="sample2" Caption="sample2样例"></DataSource>
</Category>
……

【注意】如果使用DRM连接方式,且需要使用UniEAP Report事务管理,则不应该使用com.neusoft.report.engine.util.dataaccess.DrmDataAccessFactory数据访问工厂,而应该使用com.neusoft.report.engine.util.dataaccess.JDBCDataAccessFactory ,在WEB-INF\conf\unieap\connection\connection-config.xml文件中配置drm-connection。该文件的详细配置方法请参见《UniEAP事务管理手册》。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""