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的数据库连接池。
时间: 2024-10-16 04:18:06