Spring應用程序經常部署到在Java EE應用服務器中,如WebShpere,JBoss,resin或者像Tomcat這樣的Web容器,這些服務允許你配置通過JNDI獲取數據源。在項目中經常遇到配置數據源,根據在工作中的學習和書上的學習,現在總結一下,算是一點自己的體會吧!本文以resin爲例
1.使用JNDI數據源
這種方式本質就是配置Web容器的配置文件中,隨着應用程序的啓動,連接數據源,在java應用程序中,通過配置數據源的JNDI名稱,獲取相應的數據源。
例如:
<database>
<jndi-name>db/demo1</jndi-name>
<driver type="net.sourceforge.jtds.jdbc.Driver">
<url>jdbc:jtds:sqlserver://192.168.0.0:18991;DatabaseName=aaaaa</url>
<user>xxx</user>
<password>******</password>
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>20</max-connections>
<max-idle-time>30s</max-idle-time>
</database>
<database>
<jndi-name>db/demo2</jndi-name>
<driver type="net.sourceforge.jtds.jdbc.Driver">
<url>jdbc:jtds:sqlserver://192.168.0.1:18991;DatabaseName=bbbbbb</url>
<user>xxx</user>
<password>******</password>
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>20</max-connections>
<max-idle-time>30s</max-idle-time>
</database>
這段配置需要配置在resin容器的配置文件中,在java的應用開發中就可以使用jndi-name配置的數據源名稱獲取相應的數據源連接。
2.使用數據源連接池
主要配置在Spring的配置文件進行配置,這個例子中是用了dbcp的數據源連接池,例如spring-context.xml中。
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-ethod="close">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="jdbc:jtds:sqlserver://127.0.0.1:18992/demo" />
<property name="username" value="xxx" />
<property name="password" value="***" />
<!--initialSize: 初始化連接-->
<property name="initialSize" value="6"/>
<!--maxIdle: 最大空閒連接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空閒連接-->
<property name="minIdle" value="6"/>
<!--maxActive: 最大連接數量-->
<property name="maxActive" value="20"/>
<!--removeAbandoned: 是否自動回收超時連接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超時時間(以秒數爲單位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超時等待時間以毫秒爲單位 6000毫秒/1000等於6秒-->
<property name="maxWait" value="60000"/>
<property name="minEvictableIdleTimeMillis" value="1"/>
<property name="timeBetweenEvictionRunsMillis" value="1"/>
<property name="testOnBorrow">
<value>true</value>
</property>
<property name="testOnReturn">
<value>true</value>
</property>
<property name="testWhileIdle">
<value>true</value>
</property>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
</bean>
3.基於JDBC驅動的數據源
這種配置其實和上面的2在在配置方式和配置參數中大致一樣,就是在採用驅動的時候採用了不同的驅動類型,使用了最基本的jdbc的數據庫連接池。