`

3、ConnectionPool---Web容器

 
阅读更多
    DataSource和ConnectionPool的关系:
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
			<property name="driverClass" value="${jdbc.driver}" />
			<property name="jdbcUrl" value="${jdbc.url}" />
			<property name="user" value="${jdbc.userName}" />
			<property name="password" value="${jdbc.password}" />
			<property name="initialPoolSize" value="${jdbc.pool.initialPoolSize}" />
			<property name="minPoolSize" value="${jdbc.pool.minPoolSize}" />
			<property name="maxPoolSize" value="${jdbc.pool.maxPoolSize}" />
			<property name="maxIdleTime" value="${jdbc.pool.maxIdleTime}" />
			<property name="idleConnectionTestPeriod" value="${jdbc.pool.idleConnectionTestPeriod}" />
			<property name="maxStatements" value="30" />
			<property name="acquireIncrement" value="2" />
			<property name="acquireRetryAttempts" value="0" />
			<property name="preferredTestQuery" value="${jdbc.pool.preferredTestQuery}"/>
		</bean>

从这段代码中看出,datasource配置了数据库驱动和数据库地址和连接池信息。

   数据源是指数据的来源,比如数据库。连接池是指这样一个“池子”,池子中的每个东西都是连接数据源的一个“连接”,这样别人想连接数据源的时候可以从这个“池子”里取,用完以后再放回来供以后其他想使用的人使用。
我们一般说的数据源指的就是数据库。

tomcat下配置连接池的方法:
1、context.xml  + web.xml
连接JDBC的URL格式为jdbc:sqlite:/path。这里的path为指定到SQLite数据库文件的路径.
<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
   <Resource  
      name="jdbc/mySqlite"  
      type="javax.sql.DataSource"  
      driverClassName="org.sqlite.JDBC"  
      maxIdle="4"  
      maxWait="5000"  
      url="jdbc:sqlite://F:/skx_space/java_web/sz_db/myfisrt.db"  
      maxActive="4"/>  
</Context>

	 <resource-ref>
		  <res-ref-name>jdbc/mySqlite</res-ref-name>
		  <res-type>javax.sql.DataSource</res-type>
		  <res-auth>Container</res-auth>
  </resource-ref>

测试:
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>     
<%@ page import="java.sql.*" %>     
<%@ page import="javax.naming.*" %>     
<%@ page import="javax.sql.DataSource" %>
<html>     
<head>     
<title>Tomcat8.0 JNDI!</title>    
</head>    
  <body>      
   Tomcat连接池测试,获取数据源 <br>     
    <%     
        try {      
            //初始化查找命名空间
            Context ctx = new InitialContext();  
            //参数java:/comp/env为固定路径   
            Context envContext = (Context)ctx.lookup("java:/comp/env"); 
            //参数jdbc/mysqlds为数据源和JNDI绑定的名字
            DataSource ds = (DataSource)envContext.lookup("jdbc/mySqlite"); 
            Connection conn = ds.getConnection(); 
            Statement stat = conn.createStatement();  
            ResultSet rs = stat.executeQuery("select count(1)  from people;");
            while (rs.next()) {   
             
              System.out.println("count = " + rs.getString(1));   
          } 
            conn.close();     
            out.println("<span style='color:red;'>JNDI测试成功<span>");     
        } catch (NamingException e) {     
            e.printStackTrace();     
        } catch (SQLException e) {     
            e.printStackTrace();     
        }     
    %>     
  </body>     
</html>   

print:3

2、在项目的meta目录里配置,也可在tomcat的server.xml文件中配置,也要配置context文件,不做介绍。
   在Web项目中的META-INF目录下新建一个文件context.xml,写入配置
   这里也要写数据库的绝对路径,其他mysql、oracle写入端口库名即可。这样配置就不用配置tomcat/web.xml文件了
  
<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource name="jdbc/mySqlite" 
        auth="Container" 
        type="javax.sql.DataSource" 
        maxIdle="2" 
        maxWait="10000" 
        maxActive="4"
        driverClassName="org.sqlite.JDBC"
        url="jdbc:sqlite://F:/skx_space/java_web/sz_db/myfisrt.db"
        logAbandoned="true" />
</Context>



1、程序获取连接和关闭连接
   虽然有了连接池,并不代表可以任意使用,也是需要获取一个连接,使用完后归还给连接池,这里的close方法是连接池重写的方法,connection只是一个接口,其实连接池getConnection返回的是自定义的实现类,重写了connection中所有方法。 所以这里的close并不是断开TCP连接,而是将连接返回连接池。
  而且这个close()是必须执行的,不然一直占用一个连接。
分享到:
评论

相关推荐

    commons-pool-1.3和commons-dbcp-1.2.2.rar

    Apache Commons DBCP(Database Connection Pool)是基于Apache Commons Pool实现的一个数据库连接池组件。它提供了数据库连接的创建、分配、回收和废弃等管理功能。DBCP集成了JDBC驱动,使得开发者可以方便地将...

    確保 Web AP 不會從 Glassfish Connection Pool 取到關閉的連線1

    1. 新增/修改 ConnectionPool 後,選擇進階。 2. 將連線驗證設定為必需的,然後將一旦失敗設定為關閉所有連線。 這樣可以保證 AP 不會在資料庫重新啟動後,自 Connection Pool 取到關閉的連線。另外,這個設定不...

    SpringMVC+Spring+Mybatis+Druid框架源码

    3. 创建SpringMVC的Controller,通过@Autowired注解注入Service层对象,实现用户接口的处理。 4. 在Service层中,通过Mybatis的Mapper接口执行数据库操作。 5. 配置Druid监控,可以通过Web页面实时查看数据库连接池...

    connection-pool-leak:一个简单的Web应用程序,可让您获取和释放数据源连接

    在"connection-pool-leak-master"这个项目中,开发者可能通过编写特定的Servlet或者Controller来模拟用户的数据库操作,并在Web容器(如Tomcat)中运行,以演示连接泄漏的问题和解决方案。通过对该项目的分析和实践...

    Apache的对象池化工具commons-pool

    - **JDBC Connection Pool**:针对不同的数据库,如MySQL、Oracle等,可以有不同的实现方式。例如,对于MySQL,可以使用MySQL官方提供的连接池实现;而对于Oracle,则可能需要使用Oracle特定的连接池管理器。 - **...

    c3p0-0.9.2-pre1.rar

    在Web应用中,c3p0常与Servlet容器(如Tomcat)结合使用,通过容器的JNDI服务管理数据源。这样,多个应用组件可以共享同一个数据源,提高资源利用率。 **五、c3p0版本及更新** 在给定的压缩包文件`c3p0-0.9.2-pre1...

    TongWeb5.0.1.1用户使用手册

    - **容器层**: 包括Web容器、EJB容器、JMS容器等,负责处理具体的Java EE组件。 - **核心服务层**: 提供了日志记录、安全管理、事务管理和资源管理等功能。 - **运行时环境**: 包括线程池、内存管理等基础设施。 - *...

    SSM框架流程搭建

    -- C3P0 Connection Pool --&gt; &lt;groupId&gt;c3p0 &lt;artifactId&gt;c3p0 &lt;version&gt;0.9.5.5 &lt;!-- Servlet API (for compatibility) --&gt; &lt;groupId&gt;javax.servlet &lt;artifactId&gt;javax.servlet-api &lt;version&gt;4.0.1 ...

    基于工作任务的Java_Web应用教程[覃国蓉][电子教案]

    同时,使用连接池(Connection Pool)管理数据库连接,可以提高性能并减少资源消耗。 【Java Web框架】 为了简化开发过程,许多Java Web框架应运而生,如Spring、Struts、Hibernate等。Spring框架提供了全面的应用...

    开发基于JBoss的J2EE应用.pdf

    它不仅提供了强大的EJB容器功能,还具有诸多特色优势,例如免安装特性、基于JMX架构、支持热部署以及能够快速开发EJB应用等。这些特性使得JBoss在众多商用服务器中脱颖而出。 然而,由于其开源性质,JBoss在文档...

    tomcat连接池配置

    在Java Web开发中,Tomcat作为一款广泛应用的开源Servlet容器,其性能优化是开发者关注的重点之一。连接池(Connection Pool)技术就是优化数据库操作的重要手段,它可以有效地管理数据库连接,提高系统性能。本文将...

    jboss配置Oracle连接池.doc

    - `&lt;max-pool-size&gt;`:最大连接池大小,本例中设置为300。 - `&lt;exception-sorter-class-name&gt;`:异常排序器类名,这里使用`org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter`来处理Oracle相关的异常...

    java web开发常用类库

    DBCP(Apache Database Connection Pool)是一个流行的开源连接池实现,它提供了一种有效管理数据库连接的方式,避免了频繁创建和关闭连接带来的性能损耗。 2. **Oracle 11g驱动**:Oracle 11g是Oracle公司的一个...

    SQL2000或2005数据库 连接池配置代码.doc

    DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/ConnectionPool2"); Connection connection = dataSource.getConnection(); ``` 通过这种方式,SQL Server 2000或2005的数据库连接池在...

    Tomcat6连接池两种连接方式(含两个例子)及详细步骤及使用的包

    在Java Web开发中,Tomcat6作为一款广泛应用的开源Servlet容器,经常被用来部署和运行Web应用程序。在处理大量并发请求时,为了提高数据库访问效率,开发者通常会使用连接池来管理数据库连接。本篇文章将详细讲解在...

    Tomcat连接池的配置

    在Java Web开发中,Tomcat作为一款广泛应用的Servlet容器,其性能优化往往离不开数据库连接池的合理配置。本文将深入探讨Tomcat连接池的配置,包括`web.xml`和`context.xml`两个重要配置文件的使用,以实现高效、...

Global site tag (gtag.js) - Google Analytics