<?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"是一个关键的话题,主要关注的是在Java环境中如何高效地管理和协调跨多个数据源的事务。Jtom,全称为Java Open Transaction Manager,是实现这一目标的重要工具。它是一个完全遵循...
在Tomcat6中配置好的java工程已经配置好JTOM的DataSource和UserTransaction,打包下载.请自行配置数据库与补全Tomcat6中的公共文件.然后就可以直接访问页页http://127.0.0.1:8080/DaoTemplate_my/books.jsp和...
JTOM(Java Transaction Object Manager)是一种用于管理事务处理的开源框架,它在分布式系统中扮演着重要角色。JTOM 提供了一种标准化的方式来处理事务,确保数据的一致性和完整性。在本文中,我们将深入探讨 `ccm_...
在本文中,我们将深入探讨如何使用Spring、Hibernate和JOTM进行分布式事务管理,以实现在一个Service方法中同时操作两个不同数据源的数据,并确保任何错误都能导致所有操作回滚。首先,我们需要了解这些技术的基本...
JOTM(Java Open Transaction Manager)是一款开源的事务管理器,专为Java应用程序设计,它提供了强大的事务处理能力,支持JTA(Java Transaction API)规范,使得在分布式环境中进行事务管理变得更加便捷。...
如何处理跨库事物:spring + jtom 的jta事务是个很好的选择. 这个源码示例非常不错,包括所有的源码和jar包,下载后eclipse 或 myeclipse 导入就能用。 里面有详细的说明和注释,欢迎下载传播。有问题请在评价中...
"所有jtom的使用文档,比较全面"这部分意味着这个压缩包不仅提供了JOTM的可执行代码,还包含了详细的用户指南、API文档、示例代码等,这些文档对于开发者来说至关重要,可以帮助他们理解如何配置和使用JOTM,解决在...
JOTM 是一个基于Java开放源代码的事务处理管理器。它遵循JTA APIs规范与Business Transaction Protocol(BTP)规范以提供了对Web Service的支持。
8、默认登录账号密码:admin 123456 密码如果不对,就是 jtom123456 登录后 自己 修改一下 文件包含以下文件: 1、database(数据库设计文件) 2、ruoyi-master(后端代码) 3、ruoyi-ui(管理后台前端代码) ...