SSH 配置多个数据源-样例2
来自:http://javadev.iteye.com/blog/200836
一、首先配置hibernate数据源:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
- <beans>
- <!--1、Oracle 数据源配置-->
- <bean id="oraclesessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="configLocation">
- <value>WEB-INF/classes/oracle-h.cfg.xml</value>
- </property>
- </bean>
- <bean id="oracletransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory">
- <ref local="sessionFactory" />
- </property>
- </bean>
- <!--2、SQLServer 数据源配置-->
- <bean id="sqlServersessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="configLocation">
- <value>WEB-INF/classes/sqlserver-h.cfg.xml</value>
- </property>
- </bean>
- <bean id="sqlServerTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory">
- <ref local="sqlServersessionFactory" />
- </property>
- </bean>
- <!--3、其他数据源配置-->
- .................
- 2、配置spring的事务拦截器(AOP):
- <!--1、oracle数据源 事务管理拦截器-->
- <tx:advice id="oracleTxAdvice" transaction-manager="oracletransactionManager">
- <tx:attributes>
- <tx:method name="find*" read-only="true"/>
- <tx:method name="get*" read-only="true"/> <tx:method name="notx*" propagation="NEVER"/>
- <tx:method name="*" rollback-for="自定义Exception"/>
- </tx:attributes>
- </tx:advice>
- <!--2、sqlserver数据源 事务管理拦截器-->
- <tx:advice id="sqlserverTxAdvice" transaction-manager="sqlservertransactionManager">
- <tx:attributes>
- <tx:method name="find*" read-only="true"/>
- <tx:method name="get*" read-only="true"/> <tx:method name="notx*" propagation="NEVER"/>
- <tx:method name="*" rollback-for="自定义Exception"/>
- </tx:attributes>
- </tx:advice>
- <!--3、其他数据源 事务管理拦截器-->
- .................
- <!--配置多数据源的事务拦截器-->
- <bean id="serviceAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
- <property name="beanNames">
- <list>
- <value>*Service</value>
- </list>
- </property>
- <property name="interceptorNames">
- <list>
- <value>oracleTxAdvice</value>
- <value>sqlServerTxAdvice</value>
- <value>XXXXXTxAdvice</value>
- </list>
- </property>
- </bean>