在tomcat的server.xml中配置数据库连接池和手动部署到tomcat

本文介绍了一个针对SQLServer数据库的连接池配置方法及其实现类。通过配置文件设置了最大活动连接数、最大空闲连接数等参数,并提供了一个Java类用于获取数据库连接、执行查询和更新操作。

<Context  path="/net" docBase="net" debug="5" reloadable="true" corssContext="true">

<Resource name="jdbc/ConnectionPool"

                      auth="Container"

                      type="javax.sql.DataSource"

                     maxActive="20"

                     maxIdle="5"

                     maxWait="10000"

                     username="sa"

                     password=""

                     driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

                     url="jdbc:sqlserver://localhost:1433;DatabaseName=db_net"/>

</Context>

 

 

编写的数据库连接类为

package com.wsy;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class connsqlserver {

 /**
  *   @param   args
  */
 private static Connection cn = null;

 private void getConnection() {
  if (cn != null) {
   return;
  }
  Context ctx;
  try {
   ctx = new InitialContext();
   DataSource ds = (DataSource) ctx
     .lookup("java:comp/env/jdbc/ConnectionPool");
   cn = ds.getConnection();
  } catch (NamingException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  }

  return;
 }

 public ResultSet executeQuery(String sql) {
  if (cn == null)
   getConnection();
  try {
   return cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
  } catch (SQLException e) {
   e.printStackTrace();
   return null;
  } finally {
  }
 }

 public int executeUpdate(String sql) {
  if (cn == null)
   getConnection();
  try {
   return cn.createStatement().executeUpdate(sql);
  } catch (SQLException e) {
   e.printStackTrace();
   return -1;
  } finally {
  }
 }

 public void close() {
  try {
   cn.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   cn = null;
  }
 }
}

 

Tomcat 中,**不在 `server.xml` 中配置数据库连接池,而仅在 `context.xml` 中配置**并不会导致报错,相反,这是推荐的做法。Tomcat 从版本 6 开始,将 `context.xml` 作为推荐的配置方式,主要是因为 `server.xml` 是不可动态重加载的资源,而 `context.xml` 可以在服务器运行期间被自动重新加载,无需重启 Tomcat 服务即可生效[^3]。 例如,在 `context.xml` 中配置 MySQL 数据源的典型方式如下: ```xml <Context> <Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydatabase" username="root" password="password" maxActive="100" maxIdle="30" maxWait="10000"/> </Context> ``` 该配置方式不会导致任何错误,反而能更灵活地管理 Web 应用的数据源资源。`context.xml` 文件可以放置在 `conf/Catalina/localhost/` 目录下(文件名应与应用上下文路径一致),也可以放在 Web 应用自身的 `META-INF` 目录中,Tomcat 会自动识别并加载[^1]。 相比之下,如果将数据库连接池配置放在 `server.xml` 的 `<Host>` 或 `<Service>` 节点中,不仅会导致配置冗余,还会失去动态重载的能力。此外,`server.xml` 中的 `<Executor>` 配置仅用于线程池管理,并不涉及数据库连接池的具体定义[^2]。 因此,将数据库连接池配置集中放在 `context.xml` 中是安全且高效的,不会引发任何运行时错误,反而提升了部署维护的灵活性。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值