日期:2014-05-16  浏览次数:20477 次

spring下配置多数据源

?

前言:

? 做一个移动应用的后台服务器,涉及到多数据库,以及数据库集群配置:数据源用spring管理,中间封装了自己的jdbc

?

看配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
  
	
	<bean id="pm"
		class="*****.hibernate.HibernatePersistenceManager">
		<property name="sessionFactory">
			<ref bean="sessionFactorydx" />
		</property>
	</bean>

	<bean id="dbTool" class="***.util.DBTool">
		<property name="dataSource">
			<ref bean="dataSourcedx" />
		</property>
	</bean>

	<bean id="jdbcPM"
		class="*****.jdbc.JDBCPersistenceManager">
		<property name="dbTool">
			<ref bean="dbTool" />
		</property>
	</bean>

	> </property> </bean>
	
	<bean id="dbToolbao" class="***.util.DBTool">
		<property name="dataSource">
			<ref bean="dataSourceBaob" />
		</property>
	</bean>
	
	<bean id="jdbcCore"
		class="****.jdbc.JDBCPersistenceManager">
		<property name="dbTool">
			<ref bean="dbToolbao" />
		</property>
	</bean>
	
	<bean id="dataSourceBaob" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url"
			value="jdbc:oracle:thin:@(description = (failover = on) (address_list = (address = (protocol = tcp)(host = ***)(port = ***)) (address = (protocol = tcp)(host = ***)(port = ***))) (CONNECT_DATA = (SERVICE_NAME =****) (SERVER = DEDICATED) (FAILOVER_MODE = (TYPE = select) (METHOD = basic))))
" />
		<property name="" value="" />
		<property name="" value="" />
	</bean>


	<bean id="dataSourcedx" class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
		<property name="url"
			value="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=P****)(PORT=**))(CONNECT_DATA=(SERVER=dedicated)(SID=***)))" />
		<property name="username" value="**v" />
		<property name="password" value="****" />
	</bean>

</beans>

?

?上面的配置文件,关键信息已经屏蔽,大致配置过程有,里面配了两个数据源,一个普通的数据源,另外一个集群数据库数据源配置。如果大家在陪集群数据源时出错,很可能是引入的class12.jar包不全,建议重新换jar包,因为这个原因在本地测试时发现拿conn时 不稳定,时有时无。开始我们还以为是网络问题,后来发现是class12.jar包中某些文件缺失,正规的class12.jar包大概1.2M,如果少了肯定就是不对的。

?

?

说明:1.自己封装的JDBCPersistenceManager ,这个类里有dbtool这个属性,这个属性为DBTool类型

2.datasource其实是封装在DBTool类里.

我们用的是JDBCPersistenceManager 这个类拿数据库连接.

?

?

2.如果大家部署到服务器上,比如在weblogic上配置,则改成如下形式即可:

		 
		<bean id="dataSourceBaob"		class="org.springframework.jndi.JndiObjectFactoryBean" > 
			<property		name="jndiName"> 
				<value>dataSourceBaob</value> 
			</property> 
		</bean>
	  
		<bean id="dataSourcedx"		class="org.springframework.jndi.JndiObjectFactoryBean" > 
			<property		name="jndiName"> 
				<value>dataSourcedx</value> 
			</property> 
		</bean>
			  

?

数据源配置一样,只不过把数据源交给jndi管理了

?

?

写的比较乱,大家见谅,因为在上班。。嘎嘎

?