在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. 【新提醒】N820 N821 android 4.2 V1.1版 - 大V综合交流区 - 360官方论坛

    http://bbs.360safe.com/forum.php?mod=viewthread&tid=3088815&extra=page%3D1%26filter%3Dtypeid ...

  2. Creating Spatial Indexes(mysql 创建空间索引 The used table type doesn't support SPATIAL indexes)

    For MyISAM tables, MySQL can create spatial indexes using syntax similar to that for creating regula ...

  3. MFC 只启动一个程序实例

    问题描述: 我们开发过程中可能会经常遇到,只启动一个程序实例.即一个程序启动之后,如果再次执行该程序,将会恢复之前打开的程序,而不是打开一个新的程序. 实现原理:利用FindWindow/FindWi ...

  4. perl 为什么要用引用来做对象呢?

    perl 为什么要用引用来做对象呢? 因为一个重要的原因是 my 引用 脱离作用域,外部仍旧生效

  5. ASP.NET中IsPostBack详解(转载)

    1.IsPostBack介绍Page.IsPostBack是一个标志:当前请求是否第一次打开. 调用方法为:Page.IsPostBack或者IsPostBack或者this.IsPostBack或者 ...

  6. perl lwp编码

    $var= $response->content; $var= $response->decoded_content;

  7. 在linux下如何编译C++程序

    一.GCC(GNU Compiler Collection)是linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活.它可以通过不同的前端模块来支持各种语言,如Java.Fortran. ...

  8. A - Alignment of Code(推荐)

    You are working in a team that writes Incredibly Customizable Programming Codewriter (ICPC) which is ...

  9. 【Unity3D】【NGUI】UICamera

    原文:http://www.tasharen.com/forum/index.php?topic=6711.0 NGUI讨论群:333417608 概述 UICamera这个名字不是很合适,保留的原因 ...

  10. 开发指南专题八:JEECG微云高速开发平台数据字典

       开发指南专题八:JEECG微云高速开发平台数据字典的使用 1.标签中使用数据字典 数据字典为系统中可能用到的字典类型数据提供了使用的便利性和可维护性.下面拉框标签<t:dictSele ...