美文网首页
tomcat服务器常见配置及连接池配置

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

作者: 法式大面包 | 来源:发表于2017-04-25 20:14 被阅读0次
    <?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);
        }
    }
    }
    

    相关文章

      网友评论

          本文标题:tomcat服务器常见配置及连接池配置

          本文链接:https://www.haomeiwen.com/subject/ethbzttx.html