- 浏览: 90887 次
文章分类
最新评论
DataSource和ConnectionPool的关系:
从这段代码中看出,datasource配置了数据库驱动和数据库地址和连接池信息。
数据源是指数据的来源,比如数据库。连接池是指这样一个“池子”,池子中的每个东西都是连接数据源的一个“连接”,这样别人想连接数据源的时候可以从这个“池子”里取,用完以后再放回来供以后其他想使用的人使用。
我们一般说的数据源指的就是数据库。
tomcat下配置连接池的方法:
1、context.xml + web.xml
连接JDBC的URL格式为jdbc:sqlite:/path。这里的path为指定到SQLite数据库文件的路径.
测试:
print:3
2、在项目的meta目录里配置,也可在tomcat的server.xml文件中配置,也要配置context文件,不做介绍。
在Web项目中的META-INF目录下新建一个文件context.xml,写入配置
这里也要写数据库的绝对路径,其他mysql、oracle写入端口库名即可。这样配置就不用配置tomcat/web.xml文件了
1、程序获取连接和关闭连接:
虽然有了连接池,并不代表可以任意使用,也是需要获取一个连接,使用完后归还给连接池,这里的close方法是连接池重写的方法,connection只是一个接口,其实连接池getConnection返回的是自定义的实现类,重写了connection中所有方法。 所以这里的close并不是断开TCP连接,而是将连接返回连接池。
而且这个close()是必须执行的,不然一直占用一个连接。
<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()是必须执行的,不然一直占用一个连接。
- myfisrt.rar (286 Bytes)
- 下载次数: 0
发表评论
-
11、socket
2015-04-15 21:18 0特鹅鹅鹅鹅鹅鹅鹅鹅鹅鹅发生的顶顶顶顶顶顶顶顶顶顶大顶顶顶顶顶顶 ... -
7、。。。。。。。。。。。。。。。。。。
2015-04-15 20:00 399----<注解、发射>-------- -
6、、、、、、、、、、、、、、、、、
2015-04-15 19:59 434------------<内部类>-------- ... -
10、IO---File
2015-04-15 19:54 01、分类 【字节流、字符流】 【输入流 Inp ... -
8、线程
2015-04-15 20:00 529在项目中使用多线程的场景并不是很多,我想是一般项目 ... -
9、数组、集合、链表、泛型
2015-04-15 13:23 0一、数组,可以存放多 ... -
5、java类与对象
2015-04-14 23:10 4861、包、接口、抽象类、 ... -
4、数据类型
2015-04-14 20:50 4321、基本数据类型 整数类型【byte、short、 ... -
2、JDBC----连接池
2015-04-14 17:34 705一、使用连接池的必要 ... -
1、JDBC---DriverManager/Transaction
2015-04-14 17:13 5891、Class.forName("com.mysql ...
相关推荐
Apache Commons DBCP(Database Connection Pool)是基于Apache Commons Pool实现的一个数据库连接池组件。它提供了数据库连接的创建、分配、回收和废弃等管理功能。DBCP集成了JDBC驱动,使得开发者可以方便地将...
1. 新增/修改 ConnectionPool 後,選擇進階。 2. 將連線驗證設定為必需的,然後將一旦失敗設定為關閉所有連線。 這樣可以保證 AP 不會在資料庫重新啟動後,自 Connection Pool 取到關閉的連線。另外,這個設定不...
3. 创建SpringMVC的Controller,通过@Autowired注解注入Service层对象,实现用户接口的处理。 4. 在Service层中,通过Mybatis的Mapper接口执行数据库操作。 5. 配置Druid监控,可以通过Web页面实时查看数据库连接池...
在"connection-pool-leak-master"这个项目中,开发者可能通过编写特定的Servlet或者Controller来模拟用户的数据库操作,并在Web容器(如Tomcat)中运行,以演示连接泄漏的问题和解决方案。通过对该项目的分析和实践...
- **JDBC Connection Pool**:针对不同的数据库,如MySQL、Oracle等,可以有不同的实现方式。例如,对于MySQL,可以使用MySQL官方提供的连接池实现;而对于Oracle,则可能需要使用Oracle特定的连接池管理器。 - **...
在Web应用中,c3p0常与Servlet容器(如Tomcat)结合使用,通过容器的JNDI服务管理数据源。这样,多个应用组件可以共享同一个数据源,提高资源利用率。 **五、c3p0版本及更新** 在给定的压缩包文件`c3p0-0.9.2-pre1...
- **容器层**: 包括Web容器、EJB容器、JMS容器等,负责处理具体的Java EE组件。 - **核心服务层**: 提供了日志记录、安全管理、事务管理和资源管理等功能。 - **运行时环境**: 包括线程池、内存管理等基础设施。 - *...
-- C3P0 Connection Pool --> <groupId>c3p0 <artifactId>c3p0 <version>0.9.5.5 <!-- Servlet API (for compatibility) --> <groupId>javax.servlet <artifactId>javax.servlet-api <version>4.0.1 ...
同时,使用连接池(Connection Pool)管理数据库连接,可以提高性能并减少资源消耗。 【Java Web框架】 为了简化开发过程,许多Java Web框架应运而生,如Spring、Struts、Hibernate等。Spring框架提供了全面的应用...
它不仅提供了强大的EJB容器功能,还具有诸多特色优势,例如免安装特性、基于JMX架构、支持热部署以及能够快速开发EJB应用等。这些特性使得JBoss在众多商用服务器中脱颖而出。 然而,由于其开源性质,JBoss在文档...
在Java Web开发中,Tomcat作为一款广泛应用的开源Servlet容器,其性能优化是开发者关注的重点之一。连接池(Connection Pool)技术就是优化数据库操作的重要手段,它可以有效地管理数据库连接,提高系统性能。本文将...
- `<max-pool-size>`:最大连接池大小,本例中设置为300。 - `<exception-sorter-class-name>`:异常排序器类名,这里使用`org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter`来处理Oracle相关的异常...
DBCP(Apache Database Connection Pool)是一个流行的开源连接池实现,它提供了一种有效管理数据库连接的方式,避免了频繁创建和关闭连接带来的性能损耗。 2. **Oracle 11g驱动**:Oracle 11g是Oracle公司的一个...
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/ConnectionPool2"); Connection connection = dataSource.getConnection(); ``` 通过这种方式,SQL Server 2000或2005的数据库连接池在...
在Java Web开发中,Tomcat6作为一款广泛应用的开源Servlet容器,经常被用来部署和运行Web应用程序。在处理大量并发请求时,为了提高数据库访问效率,开发者通常会使用连接池来管理数据库连接。本篇文章将详细讲解在...
在Java Web开发中,Tomcat作为一款广泛应用的Servlet容器,其性能优化往往离不开数据库连接池的合理配置。本文将深入探讨Tomcat连接池的配置,包括`web.xml`和`context.xml`两个重要配置文件的使用,以实现高效、...