最近使用到了在tomcat下配置数据源的内容,在这里转载一篇文章记录下

转载自: http://blog.csdn.net/dyllove98/article/details/7706218

在我过去工作的过程中,开发用服务器一般都是Tomcat

数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean

然后在部署时再修改JNDI配置

我猜是因为Tomcat的配置需要改配置文件

不像JBoss,Weblogic等服务器在管理界面可以直接添加JNDI数据源

也很少人去研究它的配置

最近做了个小项目,发布版本的时候都是通过ant编译成jar包之后丢给测试

测试是大爷,教他修改数据源了还是当没听到

周末闲来无聊,看了一些Tomcat配置的教程,下面做一些总结

注:如果你的工程是直接丢在webapps下面的,server.xml中就没有工程对应的Context节点

更新:由于之前有些配置来自网络,不太好用,作了一些更新

对每种方法作了一些个人评价

PS:以下配置在apache-tomcat-6.0.35下测试通过,可以访问数据库

第一种,单个应用独享数据源

就一步,找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源

  1. <Context docBase="WebApp" path="/WebApp" reloadable="true" source="org.eclipse.jst.jee.server:WebApp">
  2. <Resource
  3. name="jdbc/mysql"
  4. scope="Shareable"
  5. type="javax.sql.DataSource"
  6. factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
  7. url="jdbc:mysql://localhost:3306/test"
  8. driverClassName ="com.mysql.jdbc.Driver"
  9. username="root"
  10. password="root"
  11. />
  12. </Context>

优点:简单

缺点:重用性差

第二种,配置全局JNDI数据源,应用到单个应用

分两步

第一步, 找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源

  1. <Resource
  2. name="jdbc/mysql"
  3. scope="Shareable"
  4. type="javax.sql.DataSource"
  5. factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
  6. url="jdbc:mysql://localhost:3306/test"
  7. driverClassName ="com.mysql.jdbc.Driver"
  8. username="root"
  9. password="root"
  10. />

<script type="text/javascript"><!-- google_ad_client = "ca-pub-1944176156128447"; /* csdn 横中 */ google_ad_slot = "7877933139"; google_ad_width = 468; google_ad_height = 60; //--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

第二步,找到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink

  1. <Context docBase="WebApp" path="/WebApp" reloadable="true">
  2. <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
  3. </Context>

优点:重用性,可控性

缺点:配置相对第三种方法要繁琐一点,每个工程都得配

第三种,配置全局JNDI数据源,应用到所有Tomcat下部署的应用

也分两步

第一步

参考第二种的第一步

第二步,找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用

这个XML配置文件的根节点就是<Context>

  1. <Context>
  2. <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
  3. <WatchedResource>WEB-INF/web.xml</WatchedResource>
  4. <Context>

优点:重用性,一次性到位

缺点:没有可控性

Spring对JNDI数据源的引用

在applicationContext.xml中加一个bean,替代原来的dataSource

  1. <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql" />

C3P0数据源的配置

type和factory的值发生变化

username=>user

url=>jdbcUrl

driverClassName=>driverClass

    1. <Resource name="jdbc/mysql_c3p0" scope="Shareable"
    2. type="com.mchange.v2.c3p0.ComboPooledDataSource"
    3. factory="org.apache.naming.factory.BeanFactory"
    4. jdbcUrl="jdbc:mysql://localhost:3306/test" driverClass="com.mysql.jdbc.Driver"
    5. user="root" password="root" />

在Tomcat配置JNDI数据源的三种方式的更多相关文章

  1. 【转】在Tomcat配置JNDI数据源的三种方式

    在我过去工作的过程中,开发用服务器一般都是Tomcat 数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean 然后在部署时再修改JNDI配置 我猜 ...

  2. Tomcat配置JNDI数据源的三种方式-转-http://blog.51cto.com/xficc/1564691

    第一种,单个应用独享数据源 就一步,找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源 Xml代码   <Context docBase="WebA ...

  3. 【Tomcat】Tomcat 配置JNDI数据源(三)

    数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Connec ...

  4. 配置quartz数据源的三种方式

    如果是使用了JDBC JobStore或JobStoreCMT获得持久的Job时,就要配置相关的数据源了. 方式一:使用quartz.properties文件,这时只需要在property文件中增加如 ...

  5. spring mvc配置datasource数据源的三种方式

    2.使用org.apache.commons.dbcp.BasicDataSource 说明:这是一种推荐说明的数据源配置方式,它真正使用了连接池技术 <bean id="dataSo ...

  6. tomcat发布web项目的三种方式

    tomcat发布web项目的三种方式 方式一: 配置tomcat 安装目录下的conf/server.xml <Host name="loaclhost">标签里面添加 ...

  7. Tomcat配置JNDI数据源

    经过3个多小时的努力,配置JNDI数据源(主要是通过DBCP连接池)终于搞定-还是Tomcat官方的说明好,不过全是英文的,大概还看得懂.百度上那么花花绿绿的太多了,一个也没成功!...本例使用的数据 ...

  8. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  9. 配置数据源的三种方式和sql心跳的配置

    三种方式配置数据源连接池: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...

随机推荐

  1. 豆瓣电台笔记3:cell添加从中间向两侧放大的动画

    步骤: 1.设置动画属性的初始值 cell.layer.transform = CATransform3DMakeScale(0.1,0.1,1) 2.在指定时间内执行动画 UIView.animat ...

  2. wireshark过滤语法总结 (转载)

    做应用识别这一块经常要对应用产生的数据流量进行分析. 抓包采用wireshark,提取特征时,要对session进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后 ...

  3. spring-boot-redis-cluster简单整合例子

    代码地址如下:http://www.demodashi.com/demo/13184.html 一.前言 spring-boot项目整合redis很常见,Redis 一般上生产的时候都是以集群模式部署 ...

  4. jmeter脚本开发-BeanShell Sampler与Debug Sampler

    BeanShell支持java对象的调用,所以可直接通过BeanShell来调用java接口程序. BeanShell调用java接口例子 1.先编写两个简单的java类 创建java简单工程,并创建 ...

  5. 【C语言天天练(二三)】errno变量

    引言: 在C编程中,errno是个必不可少的变量.特别是在网络编程中. 假设你没实用过errno,那仅仅能说明你的程序不够健壮. 为什么会使用errno呢?这是系统库设计中的一个无奈之举.他很多其它的 ...

  6. 转: android emulator 命令详解

    在命令行输入: emulator -help,即可显示emulator支持的所有命令. Android Emulator usage: emulator [options] [-qemu args] ...

  7. mybatis 使用注解实现多参数传递

    若映射器中的方法只有一个参数,则在对应的SQL语句中,可以采用#{参数名}的方式来引用此参数,以前的例子多属于此类.但这种方法却不适用于需要传递多个参数的情况,今天就来介绍如何使用注解传递多个参数 一 ...

  8. 从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数

    这一章节我们讨论一下扩展添加检查订单功能,以便记录并检測输入的參数. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03 ...

  9. 关于extern的说明

    extern的作用: extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.   声明外部变量 现代编译器一般采用按文件编译的方式 ...

  10. iOS开发多线程篇 09 —NSOperation简单介绍

    iOS开发多线程篇—NSOperation简单介绍 一.NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现 ...