`
sd8089730
  • 浏览: 259307 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

JTOM分布式事物配置

 
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
                     http://www.springframework.org/schema/beans/spring-beans.xsd 
                     http://www.springframework.org/schema/tx 
                     http://www.springframework.org/schema/tx/spring-tx.xsd 
                     http://www.springframework.org/schema/aop 
                     http://www.springframework.org/schema/aop/spring-aop.xsd"
 default-lazy-init="true">
 <!-- 1. JOTM本地实例 -->
 <bean id="jotm"
  class="org.springframework.transaction.jta.JotmFactoryBean" />

 <!-- 2. JTA事务管理器 -->
 <bean id="txManager"
  class="org.springframework.transaction.jta.JtaTransactionManager">
  <!-- 2.1:指定userTransaction属性 -->
  <property name="userTransaction" ref="jotm" />
 </bean>

 <!-- 3. XAPool配置,内部包含了一个XA数据源,对应user数据库 -->
 <bean id="dataDataSource"
  class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"
  destroy-method="shutdown">
  <property name="dataSource">
   <!-- 3.1:内部XA数据源 -->
   <bean class="org.enhydra.jdbc.standard.StandardXADataSource"
    destroy-method="shutdown">
    <property name="transactionManager" ref="jotm" />
    <property name="driverName"
     value="oracle.jdbc.driver.OracleDriver" />
    <property name="url"
     value="jdbc:oracle:thin:@127.0.0.1:1521:cqsdb" />
   </bean>
  </property>
  <property name="user" value="data" />
  <property name="password" value="data" />
 </bean>

 <!-- 4. 配置另一个XAPool,对应address数据库 -->
 <bean id="centerDataSource"
  class="org.enhydra.jdbc.pool.StandardXAPoolDataSource"
  destroy-method="shutdown">
  <property name="dataSource">
   <bean class="org.enhydra.jdbc.standard.StandardXADataSource"
    destroy-method="shutdown">
    <property name="transactionManager" ref="jotm" />
    <property name="driverName"
     value="oracle.jdbc.driver.OracleDriver" />
    <property name="url"
     value="jdbc:oracle:thin:@127.0.0.1:1521:cqsdb" />
   </bean>
  </property>
  <property name="user" value="datacenter" />
  <property name="password" value="datacenter" />
 </bean>

 <!-- 5. 配置对应userDataSource数据源的userSessionFactory -->
 <bean id="dataSessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref local="dataDataSource" />
  </property>
  <property name="lobHandler" ref="oracleLobHandler" /><!-- for lob proc -->
  <property name="mappingDirectoryLocations">
   <list>
    <value>classpath:com/euler/orm</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.jdbc.batch_size">50</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
    <prop key="hibernate.cache.provider_class">
     org.hibernate.cache.EhCacheProvider
    </prop>
   </props>
  </property>
  <!-- 5.1 这里不要配,否则会报Could not find UserTransaction in JNDI [java:comp/UserTransaction]    
   <property name="jtaTransactionManager">  
   <ref bean="jotm" />  
   </property>    
  -->
 </bean>

 <!-- 6. 配置对应addressDataSource数据源的addressSessionFactory -->
 <bean id="centerSessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref local="centerDataSource" />
  </property>
  <property name="lobHandler" ref="oracleLobHandler" /><!-- for lob proc -->
  <property name="mappingDirectoryLocations">
   <list>
    <value>classpath:com/euler/orm</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.jdbc.batch_size">50</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
    <prop key="hibernate.cache.provider_class">
     org.hibernate.cache.EhCacheProvider
    </prop>
   </props>
  </property>
  <!-- 6.1 这里不要配,否则会报Could not find UserTransaction in JNDI [java:comp/UserTransaction]    
   <property name="jtaTransactionManager">  
   <ref bean="jotm" />  
   </property>  
  -->
 </bean>



 <!-- 7. 对应userSessionFactory数据源的userDao -->
 <bean id="BaseHibernateDAO"
  class="com.zjwy.dao.impl.BaseHibernateDAO">
  <property name="sessionFactory">
   <ref bean="centerSessionFactory"></ref>
  </property>
 </bean>
 <!-- dao实现类 -->
 <bean id="BaseHibernateDAOdata"
  class="com.zjwy.dao.impl.BaseHibernateDAOdata">
  <property name="sessionFactory">
   <ref bean="dataSessionFactory"></ref>
  </property>
 </bean>


 <bean id="ExtHibernateDAO"
  class="com.zjwy.dao.impl.ExtHibernateDAO">
  <property name="sessionFactory">
   <ref bean="centerSessionFactory"></ref>
  </property>
 </bean>


 <!-- 9. 进行跨数据库JTA事务的业务类 -->
 <bean id="AbstractService"
  class="com.euler.services.AbstractService" abstract="true">
  <property name="dao" ref="BaseHibernateDAO"></property>
  <property name="datadao" ref="BaseHibernateDAOdata"></property>
 </bean>

 <!-- 10. 事务拦截器 -->
 <bean id="transactionInterceptor"
  class="org.springframework.transaction.interceptor.TransactionInterceptor">
  <property name="transactionManager" ref="txManager" />
  <property name="transactionAttributes">
   <props>
    <prop key="*">-Exception</prop>
   </props>
  </property>
 </bean>

 <!-- 11. 事务增强器 -->
 <bean id="transactionAdvisor"
  class="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
  <property name="transactionInterceptor"
   ref="transactionInterceptor" />
 </bean>

 <!-- 12. 自动代理 -->
 <bean id="beanproxy"
  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
  <property name="beanNames">
   <!-- <value>execution(* com.euler.services..*.*(..))</value> -->
   <list>
   <!-- 配置事物范围 -->
    <value>*SrvImpl</value>
    <value>AutoSynchronizationDatasService</value>
    <value>EulerDBSynSvrImp</value>
   </list>
  </property>
  <property name="interceptorNames">
   <list>
    <value>transactionAdvisor</value>
   </list>
  </property>
 </bean>



 <bean id="oracleLobHandler"
  class="org.springframework.jdbc.support.lob.OracleLobHandler">
  <property name="nativeJdbcExtractor">
   <ref local="nativeJdbcExtractor" />
  </property>
 </bean>
 <bean id="nativeJdbcExtractor"
  class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor">
 </bean>
 </beans>

 

Tomcat  lib 下 需要一个  javaee.jar

分享到:
评论

相关推荐

    开源分布式事务管理Jtom

    【标题】"开源分布式事务管理Jtom"是一个关键的话题,主要关注的是在Java环境中如何高效地管理和协调跨多个数据源的事务。Jtom,全称为Java Open Transaction Manager,是实现这一目标的重要工具。它是一个完全遵循...

    java Tomcat6 JTOM Project

    在Tomcat6中配置好的java工程已经配置好JTOM的DataSource和UserTransaction,打包下载.请自行配置数据库与补全Tomcat6中的公共文件.然后就可以直接访问页页http://127.0.0.1:8080/DaoTemplate_my/books.jsp和...

    JTOM ccm_recover.

    JTOM(Java Transaction Object Manager)是一种用于管理事务处理的开源框架,它在分布式系统中扮演着重要角色。JTOM 提供了一种标准化的方式来处理事务,确保数据的一致性和完整性。在本文中,我们将深入探讨 `ccm_...

    spring+hibernate+jtom demo

    在本文中,我们将深入探讨如何使用Spring、Hibernate和JOTM进行分布式事务管理,以实现在一个Service方法中同时操作两个不同数据源的数据,并确保任何错误都能导致所有操作回滚。首先,我们需要了解这些技术的基本...

    jotm-2.0.11.MR5.rar_Jotm jar_jotm_jotm-2.0.11.MR5_jotm.jar _jtom

    JOTM(Java Open Transaction Manager)是一款开源的事务管理器,专为Java应用程序设计,它提供了强大的事务处理能力,支持JTA(Java Transaction API)规范,使得在分布式环境中进行事务管理变得更加便捷。...

    JTA事务源码示例

    如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,欢迎下载传播。有问题请在评价中...

    jotm-2.0.11.MR5.tgz

    "所有jtom的使用文档,比较全面"这部分意味着这个压缩包不仅提供了JOTM的可执行代码,还包含了详细的用户指南、API文档、示例代码等,这些文档对于开发者来说至关重要,可以帮助他们理解如何配置和使用JOTM,解决在...

    JOTM包

    JOTM 是一个基于Java开放源代码的事务处理管理器。它遵循JTA APIs规范与Business Transaction Protocol(BTP)规范以提供了对Web Service的支持。

    前后端分离的仓库物料管理系统(源代码+部署视频教程)

    8、默认登录账号密码:admin 123456 密码如果不对,就是 jtom123456 登录后 自己 修改一下 文件包含以下文件: 1、database(数据库设计文件) 2、ruoyi-master(后端代码) 3、ruoyi-ui(管理后台前端代码) ...

Global site tag (gtag.js) - Google Analytics