tomcat服务器常见配置及连接池配置

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener"/>

  <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>

  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>


  <GlobalNamingResources>

  <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
  </GlobalNamingResources>


 <Service name="Catalina">



<!--   连接器 编码utf-8 port端口 -->
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>


<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>



<Engine defaultHost="localhost" name="Catalina">

  <Realm className="org.apache.catalina.realm.LockOutRealm">
   
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
  </Realm>

  <!-- 引擎,默认项目部署在webapps文件夹里,autoDeploy表示自动设置,只要放入到 appBase中,tomcat自动部署。unpackWARs -- WAR文件,tomcat自动解压并部署-->
  <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

   <!-- 日志阀 -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
    <!-- 地址控制阀,不允许10.7.155.4访问, 10.7.155.* 不允许10.7.155内多有的ip访问
   <Valve className="org.apache.catalina.valves.RemoteAddrValue" allow="" deny="10.7.155.4" -->

  
  
  <!-- reloadable="true",eclipse每次自动会重启服务器,项目上线时部署时,应该设置为false
  把docBase的东西部署到服务器,通过path路径惊醒访问
  <Context docBase="D:\tomcat9.0\wtpwebapps\house" path="/house" reloadable="true" source="org.eclipse.jst.jee.server:house"/> -->
</Host>
  </Engine>
  </Service>
</Server>


在部署项目的时候,启用数据库连接池,xml中不能直接使用&符号,所有用转义符&代替

<Resource name="jdbc/hr" 
    auth="Container" -- 认证,让tomcat帮助认证用户名和密码,如果不认证,需要手动在代码中指定用户名和密码,tomcat帮助认证有更高的效率。
    type="javax.sql.DataSource" -- 连接类型
    maxIdle="10" -- 初始化时连接数
    maxActive="100" -- 最大连接数
    maxWait="5000" -- 超时时间
    username="root" -- 连接用户名
    password="123456" -- 连接密码
    driverClassName="com.mysql.jdbc.Driver" -- 驱动名
    url="jdbc:mysql://localhost:3306/hr?useUnicode=true&characterEncoding=utf8"--连接url,指定使用字符集和字符编码
    factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"--通过factory可以看见创建连接时的问题,当连接不上会显示错误原因
/>

在项目上线的时候连接池一般是使用部署服务器的数据库连接池,上面再Tomcat的配置中配置了连接池,然后下面在Java代码中使用Tomcat的连接池的数据库连接。

package com.czy.utils;

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

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

/**
 * 操作数据库工具类
 * @author czy
 *
 */
public class DbConfig {

/*  private static final String JDBC_DRV="com.mysql.jdbc.Driver";
private static final String JDBC_URL="jdbc:mysql://localhost:3306/hr?useUnicode=true&characterEncoding=utf8&useSSL=false";
private static final String JDBC_UID="root";
private static final String JDBC_PWD="123456";*/


    /**
     * 加载数据库的静态代码块
     */
/*  static{
    try {
        Class.forName(JDBC_DRV);
    } catch (ClassNotFoundException e) {
        throw new DbException("加载数据库驱动失败!", e);
    }
}*/

private static DataSource dataSource = null;

static{
    try {
        Context ctx = new InitialContext();
        //拿到连接池
        dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/hr");
    } catch (NamingException e) {
        e.printStackTrace();
        throw new DbException("创建数据库池时出错", e);
    }
    
}

/**
 * 构造器,不允许创建对象
 */
private DbConfig() {
    throw new AssertionError();
}

/**
 * 建立数据库连接
 * @return 数据库连接对象
 */
public static Connection getConnection(){
    try {
        //return DriverManager.getConnection(JDBC_URL, JDBC_UID, JDBC_PWD);
        return dataSource.getConnection();
    } catch (Exception e) {
        throw new DbException("创建数据库连接失败!", e);
    }
}

/**
 * 关闭连接语句
 * @param stmt 需要关闭的连接语句
 */
public static void closeStatment(Statement stmt) {
    try {
        if(stmt != null && !stmt.isClosed()) {
            stmt.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
        throw new DbException("关闭语句失败", e);
    }
}

/**
 * 关闭结果集
 * @param rs 需要关闭的结果集
 */
public static void closeResultSet(ResultSet rs) {
    try {
        if(rs != null && !rs.isClosed()) {
            rs.close();
        }
    } catch (SQLException e) {
        e.printStackTrace();
        throw new DbException("关闭结果集失败", e);
    }
}

/**
 * 关闭数据库连接
 * @param con 需要关闭的数据库连接
 */
public static void closeConnection(Connection con){
    try {
        if(con != null && !con.isClosed()) {
            //多态
            //使用数据库连接池的con并不是mysql提供的con
            //此处的close()并不是断开连接,而是释放连接池的连接,把连接归还到连接池
            con.close();
        }
    } catch (SQLException e) {
        throw new DbException("关闭数据库连接失败!", e);
    }
}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,365评论 6 343
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 大学里,舍友和我,我们都爱玩游戏,英雄联盟,天涯明月刀,NBA2k等等。但我不是那种扎进一个游戏出不来的人。大一的...
    以后养只猫他吃鱼我喝汤阅读 220评论 3 3
  • 1.新作 我走在小巷中撕扯着我的衣裳 每次裂开的地方又重新填补了我的悔恨 我又想起你红润的脸庞 还有洪亮的声音 强...
    陈恕之阅读 224评论 0 0