Tomcat数据源原理,配置,使用

在程序中,使用数据源是可以提升操作性能的,这种性能 的提升依靠运行的操作原理。

传统的JDBC操作:

1. 加载数据库驱动,通过CLASSPATH配置

2. 通过DriverManager类取得数据库连接对象

3. 通过Connection实例化PreparedStatement对象,编写SQL命令操作数据库

4. 数据库属于资源操作,操作完成后,进行数据库的关闭以释放自愿

对于不同的用户只有操作3不同,而对于1,2,4三个步骤都属于重复的操作。

如果开发中直接使用JDBC操作的话,就会产生性能的问题。怎么做更合适呢?

如果假设数据库不关闭,以后如果有新的用户使用的时候,直接去一个已经有的连接的话,那么

假设有100把伞,如果现在不下雨,肯定不能把所有的伞都摆上,所以一般平常如果没有人用的时候,至少摆上10把,当然最大的时候只能提供100把伞。

还需要一个等待的时间。

最小维持的数据库连接数,最大允许打开的连接数,等待的时间。

Tomcat4.1之后就开始支持这种操作了,这种操作称为数据库连接池,存放的是所有的数据库连接。

在web容器中,数据库的连接池都是通过数据源javax.sql.DataSource访问的,即,可以通过javax.sql.DataSource类得到一个Connection对象,如果要得到一个DataSource对象需要使用JNDI进行查找。

JNDI属于目录命名及目录查找接口,主要功能用于查找,查找对象。EJB也需要使用此概念

但是数据库的连接池需要在tomcat上完成配置。

配置mysql数据库连接池的语法:

<Context path="/mldn" docBase="D:\mldnwebdemo" reloadable="true">
<Resource name="jdbc/mldn"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="root"
password="mysqladmin"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/mldn"/>
</Context>

1. 开启mysql服务

2. 修改server.xml文件才能起作用

此配置有几个参数:

1. name:表示数据源的名称,也是要查找的名称

2. auth:表示由容器负责资源的连接

3. type:表示对象,数据源上每一个绑定的都是DataSource

4.maxActive:最大连接数

5. minIdle:最小维持的数量

6. maxWait:最大等待时间

对于连接授权有两种:Container,Application(应用程序必须程序化的登录到资源管理器,很少使用,使用Container比较多)

如果想配置oracle,只需要更改用户名密码,还有

driverClassName=oracle.jdbc.driver.OracleDriver

url="jdbc:oracle:thin:@localhost:1521:MLDN"

现在使用的tomcat版本是6.0,要想让数据源起作用,还需要更改项目中的web.xml文件:

<resource-ref>
<res-ref-name>jdbc/mldn</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

要想使用数据源的话,用以下方法

查找数据源, 通过JNDI查找:

1. 初始化名称查找上下文:Context ctx=new InitialContext();

2. 通过名称查找DataSource对象:DataSource ds=(DataSource)ctx.lookup(JNDI名称);

3. 通过DataSource取得一个数据库连接:Connection conn=ds.getConnection();

通过JSP访问的话,代码如下:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
String DSNAME = "java:comp/env/jdbc/mldn" ; // 名称
Context ctx = new InitialContext() ;
DataSource ds = (DataSource) ctx.lookup(DSNAME) ;
Connection conn = ds.getConnection() ; // 从连接池中取连接
%>
<%=conn%>
<%
conn.close() ; // 表示将连接放回到池之中
%>
</body>
</html>

所以如果用DAO模式开发时,就可以把DatabaseConnection.java改成如下格式:

package cn.mldn.lxh.dbc ;
import java.sql.* ;
import javax.sql.* ;
import javax.naming.* ;
public class DatabaseConnection {
private static final String DSNAME = "java:comp/env/jdbc/mldn" ;
private Connection conn ;
public DatabaseConnection() throws Exception {
Context ctx = new InitialContext() ;
DataSource ds = (DataSource) ctx.lookup(DSNAME) ;
this.conn = ds.getConnection() ;
}
public Connection getConnection(){
return this.conn ;
}
public void close() throws Exception {
if(this.conn != null){
try{
this.conn.close() ;
}catch(Exception e){
throw e ;
}
}
}
}

Tomcat数据源的更多相关文章

  1. 07.十分钟学会tomcat数据源

    一.数据源的作用及操作原理 1,  首先先看下传统JDBC的操作 在tomcat中使用数据库连接池操作数据库 2,JNDI属于命名及目录查找接口,在javaee的javax.naming包中 这套AP ...

  2. Tomcat数据源的原理,配置及使用(JNDI)

    Tomcat数据源的原理,配置及使用 知识点: 1.数据源的作用及操作原理; 2.Tomcat中数据源的配置; 3.数据源的查找及使用 传统JDBC使用过程存在以下四个步骤: 1.加载驱动程序 2.进 ...

  3. JDBC 学习复习9 配置Tomcat数据源

    在实际开发中,我们有时候还会使用服务器提供给我们的数据库连接池,比如我们希望Tomcat服务器在启动的时候可以帮我们创建一个数据库连接池,那么我们在应用程序中就不需要手动去创建数据库连接池,直接使用T ...

  4. Tomcat数据源(DataSource)简介

    JDBC2.0提供了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接 1.数据库和连接池 在Da ...

  5. java web(二) Tomcat数据源

    一.数据源的产生 1.JDBC操作原理 (1) 加载数据库驱动程序(数据库驱动程序可通过classpath配置): Class.forName(); (2)通过DriverManager类取得数据库连 ...

  6. Tomcat 5.5 JNDI Resource 配置 (tomcat数据源配置)

    转自:http://blog.csdn.net/fenglibing/article/details/4528512 Tomcat 5.5 JNDI Resource 配置 Author Blog:h ...

  7. TOMCAT数据源连接配置

    /* *本文档简单介绍系统使用TOMCAT6.0数据源方式连接数据库的配置方法: *1,系统环境:  gdczsam4.0 + Tomcat6.0 + JDK1.5 + SQL Server2008 ...

  8. mysql wait_timeout 8小时问题解决,tomcat数据源的配置

    异常报错: 2017-02-13 09:30:17.597 [startQuertz_Worker-6] ERROR com.autoyol.task.TransStatManageTask#exec ...

  9. 使用Tomcat数据源的方式访问数据库(MySql) --Struts2框架应用与开发

    1.为方便测试首先创建数据库和表,然后插入测试数据   2.打开Tomcat服务器安装目录的conf/下的context.xml,配置context.xml文件. 在<Context>标签 ...

随机推荐

  1. python 九九乘法表!小练习

    # 1*1 = 1 # 1*2 = 2 2*2 = 4 # 1*3 = 3 2*3 = 6 3*3 = 9 i = 1 j = 1 for j in range(1,10): for i in ran ...

  2. android ndk调用OpenGL 实现纹理贴图Texture

    android ndk调用OpenGL 实现纹理贴图Texture 时间 2014-06-25 05:24:39  CSDN博客 原文  http://blog.csdn.net/chrisfxs/a ...

  3. 《JavaScript高级程序设计》读书笔记 ---基本类型和引用类型的值

    变量.作用域和内存问题 基本类型和引用类型的值ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象.在 ...

  4. java代理的深入浅出(二)-CGLIB

    java代理的深入浅出(二)-CGLIB 1.基本原理 CGLIB的原理就是生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法.在子类中拦截所有父类方法的调用,拦截下来交给设置的Me ...

  5. 《剑指Offer》算法题——二维数组查找

    题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. class Solutio ...

  6. C# 网上收集的一些所谓的开源项目

    C#开源 商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7- ...

  7. VS中的快捷键快速格式化代码,使好看,整齐

    在VC2005中,快捷键是Ctrl + K, Ctrl + F, 这是一个组合键,即先按Ctrl + K, 这时候编辑器会等待下一个按键动作,此时再按Ctrl + F, 即可以格式化代码了,当然,也可 ...

  8. 缓存2 动态缓存 memcached

    01准备下载好memcached.exe文件-->放置c:\memcached目录中02准备下载好php_memcache.dll文件-->放置php\ext扩展目录中03配置 php.i ...

  9. how to increase an regular array length in java?

    Arrays in Java are of fixed size that is specified when they are declared. To increase the size of t ...

  10. Entity Framework 学习中级篇4—存储过程(下)

    在EF中,各个实体的插入.更新和删除也都通过使用存储过程来完成,以便提高点性能.这个类似于数据集.其步骤是:先定义存储过程,然后在VS的可视化设计器,设置存储过程映射即可. 下面,以为Supplier ...