千家信息网

如何正确的使用Tomcat 数据源

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关如何正确的使用Tomcat 数据源,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、数据源的作用及操作原理在程序代码中使用
千家信息网最后更新 2026年11月03日如何正确的使用Tomcat 数据源

今天就跟大家聊聊有关如何正确的使用Tomcat 数据源,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1、数据源的作用及操作原理  

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

传统JDBC操作步骤

1、加载数据库驱动程序,数据库驱动程序通过CLASSPATH配置;

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

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

4、数据库属于资源操作,操作完成后进行数据库的关闭以释放资源。如图所示:

对于不同的用户只有操作不同,但是对于1、2、4三个步骤很明显是一个重复的操作。

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

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

就好比,学校为学生提供雨伞,一旦下雨将为学生准备雨伞,这个时候学生不用再重新去找雨伞,之后再重新去买雨伞。

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

还需要一个等待的时间。

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

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

2、在Tomcat中使用数据库连接池

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

JNDI(Java Naming and Directory Interface)属于命名及目录查找接口,主要的功能是用于进行查找的,查找对象。
但是,现在的数据库的连接池是需要在Tomcat上完成配置的。

要修改server.xml文件才可以起作用。

如下,以连接mysql为例:

  

此配置有几个参数:

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

·auth:表示由谁负责资源连接,Container:容器管理,application:程序管理,一般设置为 Container

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

·maxActive:表示最大激活连接数,这里取值为100,表示同时最多有100个数据库连接,一般把maxActive设置成可能的并发量

·maxIdle:表示最大的空闲连接数,这里取值为30,表示即使没有数据库连接时依然可以保持30空闲的连接,而不被清除,随时处于待命状态

·maxWait:表示最大等待秒钟数,这里取值10000,表示10秒后超时,如果取值-1,则表示无限等待,直到超时为止,如果超时将接到异常

·username:数据库用户名

·password:数据库登录密码

·driverClassName:数据库驱动名称

.url:数据库url

但是现在使用的Tomcat版本是6.0以上的版本,所以想让一个数据源起作用的话,还必须在web.xml(注意:此web.xml是web项目的web.xml文件,而不是tomcat服务器的web.xml文件)文件之中完成配置。

 jdbc/mydb  javax.sql.DataSource Container

3、查找数据源 

数据源的操作使用的是JNDI方式进行查找的,所以如果要想使用数据源取得数据库连接的话,则必须按照如下的步骤进行

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

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

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

此时调用数据库会出现一个Exception:

javax.servlet.ServletException: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

实际上对于这种资源操作,本身是需要一个环境属性的支持的: java:comp/env,但是Tomcat服务器本身是免费的,没有对这种属性提供支持,如果要想访问Tomcat中的名称服务的话,则肯定要在前面加上此属性,即,现在的名称是: java:comp/env/jdbc/mydb;即用Tomcat的话JNDI名称就是:java:comp/env/JNDI名称 。

以后程序中只认名字,而具体是哪个数据库将由配置决定。

当然,如果现在使用的是DAO开发的,DatabaseConnection.java类。

package com.shawn.mvcdemo.dbc;import java.sql.*;import javax.sql.*;import javax.naming.*;public class DatabaseConnection{ private static final String DSNAME = "java:comp/env/jdbc/mldn";//java:comp/JNDI名称 private Connection conn = null; public DatabaseConnection() throws Exception{  Context ctx = new InitialContext();//初始化名称查找上下文  DataSource ds = (DataSource)ctx.lookup(DSNAME); //通过名称查找DataSource对象  this.conn = ds.getConnection();  //通过DataSource取得一个数据库连接 } public Connection getConnection(){  return this.conn; } public void close() throws Exception{  if(this.conn != null){   try{    this.conn.close();//释放数据库连接   } catch(Exception e){    throw e;   }  } } public static void main(String args[]){  try{   System.out.println(new DatabaseConnection().getConnection());  } catch(Exception e){   e.printStackTrace();  } }}

可是有一点也必须注意的是,现在的数据库连接池实在Tomcat上配置的,所以此程序只能在web下运行,而不能使用application程序运行。

总结:

要使用数据库连接池

1、配置server.xml;

2、配置web项目中的(比如:webdemo项目)web.xml文件,添加 resource-ref 配置;

3、修改程序中获取Connection的方式。

看完上述内容,你们对如何正确的使用Tomcat 数据源有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

数据 数据库 名称 数据源 配置 对象 程序 最大 文件 时候 资源 雨伞 支持 作用 内容 学生 属性 性能 步骤 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司 互联网最新的科技有限公司 易通互联网络科技有限公司 上海致骋互联网科技 兼蜜互联网科技 互联网 科技服务平台 丰台科技园 互联网公司 中盈科技互联网信息有限公司 阿里巴巴算科技企业还是互联网 互联网科技中介 汽车互联网创新科技园 互联网为啥属于高科技 互联网5g黑科技有哪些 搜狐科技互联网 爱医互联网络科技 中科明德北京互联网科技 35岁以上互联网科技行业 数字互联网科技有限公司 数字科技和互联网金融哪个好 安徽九吞吴互联网科技有限公司 华宇互联网科技 百单互联网科技有限公司 友谊互联网络科技 山东吉时兔互联网科技有限公司 昭通云南众福互联网科技有限公司 互联网科技如何创业 美国互联网科技公司 信承诺互联网科技有限公司 河南商务圈互联网科技有限公司 互联网科技创新方面的资料
0