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);
    }
}
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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

友情链接更多精彩内容