在Spring框架中有例如以下3种获得DataSource对象的方法:

1.从JNDI获得DataSource.

2.从第三方的连接池获得DataSource.

3.使用DriverManagerDataSource获得DataSource.

一、从JNDI获得DataSource

SpringJNDI数据源配置信息:

  <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

 <property name="jndiName">

  <value>java:comp/env/jcptDataSourceJNDI</value>

 </property>

  </bean>

  jcptDataSourceJNDI是tomcat或者其它应用server配置的JNDI.

2、关于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>元素用来指定各种參数值(也能够像上面那样配置)

  属性:描写叙述

  factory       指定生成的DataResource的factory类名

  maxActive     指定数据库连接池中处于活动状态的最大连接数目,0表示不受限制

  maxIdle       指定数据库连接池中处于空暇状态的最大连接数目。0表示不受限制

  maxWait       指定连接池中连接处于空暇状态的最长时间,超过会抛出异常,-1表示无限

  username      指定连接数据库的用户名

  password      指定连接数据库的口令

  driverClassName    指定连接数据库的JDBC驱动程序

  url             指定连接数据库的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> 

  在web.xml中增加<resource-ref>元素:<resource-ref>元素表示在Web应用中引用JNDI资源  

  属性:描写叙述

  description     对所引用的资源的说明

  res-ref-name    指定所引用资源的JNDI名字,与<Resource>元素中的name属性相应

  res-type        指定所引用资源的类名字,与<Resource>元素中的type属性相应

  res-auth        指定所引用资源的Manager,与<Resource>元素中的auth属性相应

很多其它信息:能够參考http://blog.csdn.net/cyxlzzs/article/details/7352837

二、从第三方的连接池获得DataSource

    Spring在第三方依赖包中包括了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0

  1) DBCP类包位于 /lib/jakarta-commons/commons-dbcp.jar。DBCP是一个依赖 Jakarta commons-pool对象池机制的数据库连接池,

   所以在类路径下还必须包含/lib/jakarta- commons/commons-pool.jar。

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>

        <property name="url" value="jdbc:oracle:thin:@192.168.1.35:1521:orcl"></property>

        <property name="username" value="or_meal"></property>

        <property name="password" value="or_meal"></property>

        <property name="maxActive" value="100"></property>

        <property name="maxIdle" value="30"></property>

        <property name="maxWait" value="10"></property>

        <property name="defaultAutoCommit" value="false"></property>

    </bean>

 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >

        <property name="dataSource">

            <ref bean="dataSource" />

        </property>

        <property name="hibernateProperties">

            <props>

                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect

                </prop>

                <prop key="show_sql">true</prop>

                <prop key="format_sql">true</prop>

            </props>

        </property>

        <property name="mappingResources">

        <list></list>

        </property>

    </bean>

    BasicDataSource提供了close()方法关闭数据源,所以必须设定destroy-method=”close”属性。

    以便Spring容器关闭时,数据源可以正常关闭。除以上必须的数据源属性外。另一些经常使用的属性:

    defaultAutoCommit:设置从数据源中返回的连接是否採用自己主动提交机制,默认值为 true;

    defaultReadOnly:设置数据源是否仅能运行仅仅读操作, 默认值为 false;

    maxActive:最大连接数据库连接数。设置为0时。表示没有限制;

    maxIdle:最大等待连接中的数量,设置为0时,表示没有限制;

    maxWait:最大等待秒数,单位为毫秒, 超过时间会报出错误信息;

    validationQuery:用于验证连接是否成功的查询SQL语句。SQL语句必须至少要返回一行数据。

    removeAbandoned:是否自我中断,默认是 false ;

    removeAbandonedTimeout:几秒后数据连接会自己主动断开,在removeAbandoned为true。提供该值。

    logAbandoned:是否记录中断事件, 默觉得 false;

   

    2)C3P0是一个开放源码的JDBC数据源实现项目,C3P0类包位于Spring中lib/c3p0/c3p0-0.9.1.2.jar。

<bean

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >

        <property name="locations">

            <value>classpath:jdbc.properties</value>

        </property>

    </bean>

 

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method=”close”>

        <property name="driverClass"value="${jdbc.driverClassName}"/>

        <property name="jdbcUrl"value="${jdbc.url}"/>

        <property name="user"value="${jdbc.username}"/>

        <property name="password"value="${jdbc.password}"/>

    </bean>

三、使用DriverManagerDataSource获得DataSource

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

        <property name="driverClassName">

            <value>oracle.jdbc.driver.OracleDriver</value>

        </property>

        <property name="url">

            <value>jdbc:oracle:thin:@192.168.1.35:orcl</value>

        </property>

        <property name="username">

            <value>or_meal</value>

        </property>

        <property name="password">

            <value>or_meal</value>

        </property>

    </bean>

<bean id="dataBean" class="onlyfun.caterpillar.DataBean"> 

        <property name="dataSource"> 

            <ref bean="dataSource"/> 

        </property> 

    </bean> 

    DriverManagerDataSource建立连接是仅仅要有连接就新建一个connection,根本没有连接池的作用

Spring配置DataSource数据源的更多相关文章

  1. spring配置datasource三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...

  2. Spring配置动态数据源-读写分离和多数据源

    在现在互联网系统中,随着用户量的增长,单数据源通常无法满足系统的负载要求.因此为了解决用户量增长带来的压力,在数据库层面会采用读写分离技术和数据库拆分等技术.读写分离就是就是一个Master数据库,多 ...

  3. Spring配置c3p0数据源时出错报:java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector

    今天在使用Spring配置c3p0数据源时,使用的数据库是mysql,服务器是tomcat,运行时报了一个 java.lang.NoClassDefFoundError: com/mchange/v2 ...

  4. Spring中配置DataSource数据源的几种选择

    从JNDI获得DataSource. 从第三方的连接池获得DataSource. 使用DriverManagerDataSource获得DataSource. 一.从JNDI获得DataSource ...

  5. Spring配置多数据源错误总结

    由于系统需要调用多个数据源包含mysql,sqlServe和Oracle,所以要在Spring的xml文件中配置多数据源,一下是配置过程中常见的错误: 1.配置的是mysql的数据源,却报oracle ...

  6. spring配置datasource三种方式及具体信息

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource说明:DriverManagerDataSource建立连接是只要有连接就 ...

  7. 使用Spring配置动态数据源实现读写分离

    最近搭建的一个项目需要实现数据源的读写分离,在这里将代码进行分享,以供参考.关键词:DataSource .AbstractRoutingDataSource.AOP 首先是配置数据源 <!-- ...

  8. spring配置datasource

    1.使用org.springframework.jdbc.datasource.DriverManagerDataSource  说明:DriverManagerDataSource建立连接是只要有连 ...

  9. spring配置多数据源——mybatis

    这篇文章是配置mybatis多数据源文章,如果是hibernate的话也是没什么影响,配置都是差不多的. 在这家公司上班差不多一星期了,不小心点开配置文件一看这项目配置了两个数据源,蒙了. 之后上网查 ...

随机推荐

  1. WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇]

    原文:WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[下篇] 在[第2篇]中,我们深入剖析了单调(PerCall)模式下WCF对服务实例生命周期的控制,现在我们来 ...

  2. Android开发之SoundPool使用具体解释

    使用SoundPool播放音效 假设应用程序常常播放密集.急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了.由于MediaPlayer存在例如以下缺点: 1)      ...

  3. QT的动态翻译功能,可能依赖于消息(事件)机制

    QTranslator translator; bool b = translator.load(QString(":/qm/lang_en"));以后,无论使用QObject的t ...

  4. perl 使用SUPER类来访问覆盖的方法

    有时候,你希望一个衍生类的方法表现得象基类中的某些方法的封装器 这就是 SUPER 伪类提供便利的地方.它令你能够调用一个覆盖了的基类方法,而不用声明 是哪个类定义了该方 法.(注:不要把这个和第十一 ...

  5. uva10791

    #include <iostream> using namespace std; int main(int argc, char *argv[]) { int j,k,m=0,flag; ...

  6. 真机測试时的错误:No matching provisioning profiles found

    1.出现错误的原因是这种---- 公司接收一个外包项目,原来做真机測试的时候,用的是公司申请的苹果开发人员账号.如今项目结束了,准备上线,但客户要求使用客户自己的苹果开发人员是账号上线,于是就用客户的 ...

  7. Swift - 使用CoreLocation获取设备方向(真实方向,磁极方向)

    CoreLocation这个定位框架除了可以获取设备的位置数据,还可以获取设备的方向(可以用来实现指南针功能等). 1,CLHeading对象通过一组属性提供航向相关数据: magneticHeadi ...

  8. clearcase常用命令

    版本控制工具学习 http://www.itpxpj.com/course.do?method=getAllCourseInFront&classTypeId=21 1.[ClearCase] ...

  9. 重操JS旧业第九弹:函数表达式

    函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解 ...

  10. GnuWin,包括FLEX BISON GREP

    https://sourceforge.net/projects/gnuwin32/files/?source=navbar