浏览 362 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-06-06 关键字: 一个项目中多数据源配置
现在的好多项目,一般一个web应用会同时链接多个数据源,不知道大家是如何配置的?不知道如下做法有没有什么不好的地方。 一、首先配置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>
这样就可以配置多个数据源了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-07
怎么没看到有人发表意见啊?
|
|
| 返回顶楼 | |
|
最后更新时间:2008-06-09
还有更好的方法?
|
|
| 返回顶楼 | |



