[javaEE] tomcat内部连接池

在META-INF的目录下,新建context.xml

在程序中获取数据源,通过jndi,这个jndi必须在Servlet中才能获取,并且需要配置web.xml使servlet一启动就拿到数据源

context.xml

<?xml version="1.0" encoding="utf-8"?>
<Context>
    <Resource
    name="mySource"
    type="javax.sql.DataSource"
    username="root"
    password="root"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql:///java"
    maxActive="8"
    maxIdle="4"
    />
</Context>
package com.tsh.web;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

/**
 */
public class DataSourceTest extends HttpServlet {

    /**
     */
    public DataSourceTest() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
    /**
     * 创建后就会启动
     */
    @Override
    public void init() throws ServletException {
        try {
            //注意导包javax.naming.Context;
            Context context= new InitialContext();
            Context jndi=(Context) context.lookup("java:comp/env");
            DataSource source =(DataSource) jndi.lookup("mySource");
            //注意导包 java.sql.Connection;
            Connection conn=source.getConnection();
            //获取传输器对象
            Statement statement=conn.createStatement();
            //获取结果集对象
            ResultSet resultSet=statement.executeQuery("select * from user");
            //遍历
            while(resultSet.next()){
                String username=resultSet.getString("username");
                System.out.println(username);
            }
            //关闭资源
            resultSet.close();
            statement.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

web.xml

    <servlet>
        <servlet-name>DataSourceTest</servlet-name>
        <servlet-class>com.tsh.web.DataSourceTest</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DataSourceTest</servlet-name>
        <url-pattern>/Servlet/DataSourceTest</url-pattern>

    </servlet-mapping>
时间: 2024-10-09 02:30:29

[javaEE] tomcat内部连接池的相关文章

Zabbix 监控 tomcat 连接池(报错org.archive.jmx.Client ...is not a registered bean)

Zabbix 监控 tomcat 连接池 一.     前言 领导提出需求,需要监控tomcat的连接池,之前已经通过zabbix监控了jvm(关于jvm监控这部分,后续补上).在网上找了很多教程,经历了很多坑,不过还是要感谢那些帮助过我的人,踩着坑搞出来,也是记忆犹新呀. 二.     基础环境 操作系统:Centos 6.8 Jdk:1.8.0_77(jdk最好是1.7及以上) Tomcat:7.0.69 Zabbix:3.0.3 三.     环境部署 (一)         Zabbix

javaEE Tomcat目录结构

 1. 一级目录 bin --Tomcat执行脚本目录 conf --Tomcat配置文件 lib --Tomcat运行需要的库文件(JARS) logs --Tomcat执行时的LOG文件 temp --Tomcat临时文件存放目录 webapps --Tomcat的主要Web发布目录(存放我们自己的JSP,SERVLET,类) work --Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里. 2. 二级目录(仅列出一级目录下几个重要的文件) (1)

Tomcat 连接池详解

(转) JDBC 连接池 org.apache.tomcat.jdbc.pool 是Apache-Commons DBCP连接池的一种替换或备选方案. 那究竟为何需要一个新的连接池? 原因如下: Commons DBCP 1.x 是单线程.为了线程安全,在对象分配或对象返回的短期内,Commons 锁定了全部池.但注意这并不适用于 Commons DBCP 2.x. Commons DBCP 1.x 可能会变得很慢.当逻辑 CPU 数目增长,或者试图借出或归还对象的并发线程增加时,性能就会受到影

Tomcat数据库连接池

由于项目需要,用到Tomcat连接池,从网上查了很多内容,按照高人的内容一步一步,还是有问题,最后还是看官方例子找到了正确方法. 官网链接:http://tomcat.apache.org/tomcat-8.5-doc/jndi-resources-howto.html tomcat版本:apache-tomcat-8.5.15 1.将mysql的连接包mysql-connector-java-5.1.41-bin.jar文件拷贝到Tomcat的lib文件夹下. 2.web应用下,META-IN

3中建立数据库连接池dbcp和c3p0和tomcat数据池

DBCP数据源:需要 •Commons-dbcp.jar:连接池的实现 •Commons-pool.jar:连接池实现的依赖库 dbcpconfig.properties(这个在src同目录下--模板) #连接设置 driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbc username=root password= #<!-- 初始化连接 --> initialSize=10 #最大连接数量 max

05 - Tomcat 线程池的配置与优化

添加 Executor 在server.xml中的Service节点里面,增加executor节点,然后配置connector的executor属性,如下: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="3000" minSpareThreads="5" maxSpareThreads="20" ac

tomcat数据库连接池配置

tomcat7增强了数据库连接池功能,连接池配置如下: <Resource name="jdbc/ecp" auth="Container" type="javax.sql.DataSource" maxActive="300" maxIdle="100" maxWait="10000" username="xm_db_portal" factory="

Tomcat线程池,更符合大家想象的可扩展线程池

因由 说起线程池,大家可能受连接池的印象影响,天然的认为,它应该是一开始有core条线程,忙不过来了就扩展到max条线程,闲的时候又回落到core条线程,如果还有更高的高峰,就放进一个缓冲队列里缓冲一下. 有些整天只和SSH打交道的同学,可能现在还是这样认为的. 无情的现实就是,JDK只有两种典型的线程池,FixedPool 与 CachedPool: FixedPool固定线程数,忙不过来的全放到无限长的缓冲队列里. CachedPool,忙不过来时无限的增加临时线程,闲时回落,没有缓冲队列.

如何设置tomcat线程池大小?

背景 在我们的日常开发中都涉及到使用tomcat做为服务器,但是我们该设置多大的线程池呢?以及根据什么原则来设计这个线程池呢?接下来,我将介绍本人是怎么设计以及计算的. 目标 确定tomcat服务器线程池大小 具体方法 众所周知,tomcat接受一个request后处理过程中,会设计到cpu的时间和IO等待的时间.其中IO等待时,cpu被动放弃执行,其他线程就可以利用这段时间片进行操作. 所以我们可以采用服务器IO优化的通用规则: 线程大小 = ( (线程io时间 + 线程cpu)  / 线程c