「java连接池实例」java数据连接池工作机制
本篇文章给大家谈谈java连接池实例,以及java数据连接池工作机制对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java数据库连接池的几种配置方法(以MySQL数
- 2、怎么在JAVA中创建一个数据库连接池?求实例代码
- 3、java配置连接池时不能得到一个DataSource实例,高手请进!
- 4、几个主流的Java连接池有哪些?
Java数据库连接池的几种配置方法(以MySQL数
连接先建立一些连接,并且这些连接允许共享,因此这样就节省了每次连接的时间开销。Mysql数据库为例,连接池在Tomcat中的配置与使用。
1、创建数据库Student,表student
2、配置server.xml文件。Tomcat安装目录下conf中server.xml文件。
GlobalNamingResources
Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/
/GlobalNamingResources
name:指定连接池的名称
type:指定连接池的类,他负责连接池的事务处理
url:指定要连接的数据库
driverClassName:指定连接数据库使用的驱动程序
username:数据库用户名
password:数据库密码
maxWait:指定最大建立连接等待时间,如果超过此时间将接到异常
maxIdle:指定连接池中连接的最大空闲数
maxActive:指定连接池最大连接数
3、配置web.xml文件。
web-app
resource-ref
descriptionmysql数据库连接池配置/description
res-ref-namejdbc/DBPool/res-ref-name
res-typejavax.sql.DataSource/res-type
res-authContainer/res-auth
res-sharing-scopeShareable/res-sharing-scope
/resource-ref
/web-app
4、配置context.xml文件
与server.xml文件所在的位置相同。
Context
ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/
/Context
5、测试
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//检索指定的对象,返回此上下文的一个新实例
pool = (DataSource)env.lookup("jdbc/DBPool");
//获得数据库连接池
if(pool==null){out.printl("找不到指定的连接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}
怎么在JAVA中创建一个数据库连接池?求实例代码
用c3po来创建数据库连接池,
1.到网络上下载c3p0-0.9.0.4.jar包,导入工程;(注意以下方法只能用于web服务).
2.找出web服务器中conf目录下的centent.xml,在里面加上以下配置
Resource auth="Container"
description="DB Connection"
driverClass="com.mysql.jdbc.Driver"
maxPoolSize="4"
minPoolSize="2"
acquireIncrement="1"
name="jdbc/TestDB"
user="root"
password="root"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
jdbcUrl="jdbc:mysql://localhost:3306/自己的数据库名?autoReconnect=true" /
3.java获取连接池的代码;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBUtils {
static InitialContext ic;
static DataSource ds;
static{
try {
ic = new InitialContext();
ds = (DataSource)ic.lookup("java:comp/env/jdbc/TestDB");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getCon() {
try {
return ds.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
通过以上代码,即可获取连接池中的连接.
java配置连接池时不能得到一个DataSource实例,高手请进!
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/news");
把这句分开写看看。
Context ic = new InitialContext();
Context env = (Context) ic.lookup("java:comp/env");
DataSource ds = (DataSource) env.lookup("jdbc/news");
几个主流的Java连接池有哪些?
现在常用的开源数据库连接池主要有c3p0、dbcp、proxool三种,其中:\x0d\x0aSpring 推荐使用dbcp;\x0d\x0aHibernate 推荐使用c3p0和proxool; \x0d\x0a1、 DBCP:Apache\x0d\x0aDBCP(DataBase connection pool)数据库连接池。是Apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。 \x0d\x0a2、 C3P0:\x0d\x0aC3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。 \x0d\x0a3、 Proxool:Sourceforge\x0d\x0aProxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。 \x0d\x0a对比:\x0d\x0a1 相同时间内同等量的线程数和循环次数下:通过对三个连接池的三个标志性性能测试参数(Average,median,90%Line)进行比较发现:性能dbcp 不同情况下的同一数据库连接池测试:通过观察 Average,median,90%Line三个参数发\x0d\x0a现三个连接池的稳定性(三种连接池的三个测试参数的变化情况)依次:稳定性dbcp=c3p0proxool。 \x0d\x0a结论: \x0d\x0a通过对三种数据库连接池的性能测试发现,proxool和 c3p0能够更好的支持高并发,但是在稳定性方面略逊于 dpcp;
关于java连接池实例和java数据连接池工作机制的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。