Spring中配置DataSource數(shù)據(jù)源的幾種選擇
在Spring框架中有如下3種獲得DataSource對象的方法:
- 從JNDI獲得DataSource.
- 從第三方的連接池獲得DataSource.
- 使用DriverManagerDataSource獲得DataSource.
一、從JNDI獲得DataSource
SpringJNDI數(shù)據(jù)源配置信息:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>java:comp/env/jcptDataSourceJNDI</value> </property> </bean>
jcptDataSourceJNDI是tomcat或者其他應(yīng)用服務(wù)器配置的JNDI.
關(guān)于JNDI的配置(tomcat):
修改tomcat目錄conf/context.xml文件或server.xml文件:
<Resource name="jcptDataSourceJNDI" auth="Container"type="javax.sql.DataSource"maxActive="100"maxIdle="30"maxWait="10"username="tysp"password="12345678"driverClassName="oracle.jdbc.driver.OracleDriver"url="jdbc:oracle:thin:@192.168.1.35:1521:orcl" />
在server.xml中加入<Resource>元素:<Resource>元素用來定義JNDI Resource有额。
屬性:描述
name:指定Resource的JNDI名字
auth:指定管理Resource的Manager般又,它有兩個可選值:Container、Application
type:指定Resource所屬的Java類名
<Resource>元素中加入<ResourceParams>元素:<ResourceParams>元素用來指定各種參數(shù)值(也可以像上面那樣配置)
屬性:描述
factory 指定生成的DataResource的factory類名
maxActive 指定數(shù)據(jù)庫連接池中處于活動狀態(tài)的最大連接數(shù)目巍佑,0表示不受限制
maxIdle 指定數(shù)據(jù)庫連接池中處于空閑狀態(tài)的最大連接數(shù)目茴迁,0表示不受限制
maxWait 指定連接池中連接處于空閑狀態(tài)的最長時間,超過會拋出異常,-1表示無限
username 指定連接數(shù)據(jù)庫的用戶名
password 指定連接數(shù)據(jù)庫的口令
driverClassName 指定連接數(shù)據(jù)庫的JDBC驅(qū)動程序
url 指定連接數(shù)據(jù)庫的URL
3萤衰、通過JNDI獲取DataSource:
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jcptDataSourceJNDI");
4.在web.xml中加入(spring配置中可以不用)
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/TestDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>