㈠ 几个主流的java连接池有哪些
现在常用的开源数据库连接池主要有c3p0、dbcp、proxool三种,其中:
Spring 推荐使用dbcp;
Hibernate 推荐使用c3p0和proxool;
1、 DBCP:Apache
DBCP(DataBase connection pool)数据库连接池。是Apache上的一个 java连接池项目,也是 tomcat使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。
2、 C3P0:
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有Hibernate,Spring等。c3p0有自动回收空闲连接功能。
3、 Proxool:Sourceforge
Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
对比:
1> 相同时间内同等量的线程数和循环次数下:通过对三个连接池的三个标志性性能测试参数(Average,median,90%Line)进行比较发现:性能dbcp<=c3p0<proxool;
2> 不同情况下的同一数据库连接池测试:通过观察 Average,median,90%Line三个参数发
现三个连接池的稳定性(三种连接池的三个测试参数的变化情况)依次:稳定性dbcp>=c3p0>proxool。
结论:
通过对三种数据库连接池的性能测试发现,proxool和 c3p0能够更好的支持高并发,但是在稳定性方面略逊于 dpcp;
㈡ Tomcat中创建连接池怎么用
1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中;
2.在server.xml中设置数据源,以MySQL数据库为例,如下:
在<GlobalNamingResources> </GlobalNamingResources>节点中加入,
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://127.0.0.1:3306/test"
maxActive="4"/>
属性说明:name,数据源名称,通常取”jdbc/XXX”的格式;
type,”javax.sql.DataSource”;
password,数据库用户密码;
driveClassName,数据库驱动;
maxIdle,最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连
接将被标记为不可用,然后被释放。设为0表示无限制。
MaxActive,连接池的最大数据库连接数。设为0表示无限制。
maxWait ,最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示
无限制。
3.在你的web应用程序的web.xml中设置数据源参考,如下:
在<web-app></web-app>节点中加入,
<resource-ref>
<description>MySQL DB Connection Pool</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
子节点说明: description,描述信息;
res-ref-name,参考数据源名字,同上一步的属性name;
res-type,资源类型,”javax.sql.DataSource”;
res-auth,”Container”;
res-sharing-scope,”Shareable”;
4.在web应用程序的context.xml中设置数据源链接,如下:
在<Context></Context>节点中加入,
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"/>
属性说明:name,同第2步和第3步的属性name值,和子节点res-ref-name值;
type,同样取”javax.sql.DataSource”;
global,同name值。
至此,设置完成,下面是如何使用数据库连接池。
1.建立一个连接池类,DBPool.java,用来创建连接池,代码如下:
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBPool {
private static DataSource pool;
static {
Context env = null;
try {
env = (Context) new InitialContext().lookup("java:comp/env");
pool = (DataSource)env.lookup("jdbc/DBPool");
if(pool==null)
System.err.println("'DBPool' is an unknown DataSource");
} catch(NamingException ne) {
ne.printStackTrace();
}
}
public static DataSource getPool() {
return pool;
}
}
2.在要用到数据库操作的类或jsp页面中,用DBPool.getPool().getConnection(),获得一个Connection对象,就可以进行数据库操作,最后别忘了对Connection对象调用close()方法,注意:这里不会关闭这个Connection,而是将这个Connection放回数据库连接池。
㈢ tomcat数据库连接池出现异常
第一步,把驱动有放在了tomcat/common/lib下面,第二步修改tomcat/conf/context.xml。 代码如下
<Resource name="jdbc/bank" auth="Container"
type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="sa"
password="sa"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bank"
/>
然后带连接类里 Context ic = new InitialContext();
DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/food");
conn = ds.getConnection();
获得连接,然后就可以用了
㈣ 怎么在tomcat配置数据库连接池
方法/步骤
Tomcat大都是免安装绿色版的,找到Tomcat的解压路径,然后找打一下文件:tomcat\conf\context.xml。
打开文件context.xml。
将右侧滚动条拉到最下方,并添加如下图红色框内的代码。
也可复制如下代码:
<Resource driverClassName="oracle.jdbc.driver.OracleDriver"
maxActive="30" maxIdle="3" maxWait="5000" name="jdbc/test" username="test" password="test"
type="javax.sql.DataSource" url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
那上边的代码有什么作用呢?下边来给大家解释比较常用的几个参数。
driverClassName:驱动的名称。
该参数为数据库驱动类名称,比如上边使用的是oracle的驱动。当然也意为着只能连接Oracle的数据库。如果想用MySQL的,那就写下边这个喽。
MySQL的驱动为:com.mysql.jdbc.Driver
name/password:为数据库的用户名和密码。
㈤ java中建立数据库连接池,有哪几个步骤
配置包括3步:1.让tomcat容器启动创建数据库连接池2.在某个项目中关联数据库连接池,3.取得数据库连接池并使用。使用包括,当拿到数据库连接后,可以通过2种方式来使用,1.使用jstl的标签,2.封装成返回connection的方法。
1.让tomcat容器启动创建数据库连接池:
配置的地方很多,根据不同的需求配置在不同的位置,但原理就一个,就是要配置一个Context标签下有一个resource标签。
a.在Tomcat 6.0\conf\Catalina\localhost目录下新建一个跟项目名一样的*.xml文件
b.数据源设置的名字(JNDI) auth:表示数据源由谁管理,这儿是tomcat容器本身 type:类型
c.驱动设置,该驱动放在tomcat的lib下或者放在该站点的lib下设置连接数据库字符串,url设置连接数据库的用户名设置数据库连接的密码-->
2.在某个项目中关联数据库连接池,在web.xml添加代码:
<!--关联jndi数据库连接池 -->
3.使用jstl标签测试数据源是否配置成功
4.在jsp中通过java代码测试:
5.封装成bean对外提供得到数据库连接池连接的方式:
㈥ TOMCAT怎么配置连接池
Tomcat的连接池配置方式具体如下:
一.配置tomcat连接池
1. 修改server.xml或者在conf/Catalina/localhost下添加对应的xml片段。此处使用的是第二种方法。
在conf/Catalina/localhost文件夹下新建ROOT.xml片段,添加以下内容:
<?xmlversion="1.0"encoding="UTF-8"?>
<Context crossContext="true" useHttpOnly="true">
<Resourcename="jdbc/infogrid" type="javax.sql.DataSource" password="123456" driverClassName="com.mysql.jdbc.Driver" maxIdle="10" maxWait="50" username="root" url="jdbc:mysql://localhost:3306/infogrid?autoReconnect=true" maxActive="20"/>
</Context>
2. 为tomcat添加数据库连接驱动包,本用例使用mysql,将mysql的驱动包添加到common/lib下
二.编写java测试类(该类必须部署在tomcat容器中,否则无法获得JNDI资源)
PreparedStatement ps=null;
ResultSet rs=null;
try{
InitialContext ctx=new InitialContext();
DataSource dataSource=(DataSource)ctx.lookup("java:comp/env/jdbc/infogrid");
Connection connection=dataSource.getConnection();
ps=connection.prepareStatement("select count(*) from test");
rs=ps.executeQuery();
rs.next();
System.out.println("表中行数为:"+rs.getInt(1));
rs.close();
ps.close();
System.out.println(connection.getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
Field field=connection.getClass().getDeclaredField("delegate");
field.setAccessible(true);
System.out.println(field.get(connection).getClass());
//class org.apache.tomcat.dbcp.dbcp.PoolableConnection
connection.close();
//此关闭并非为真得关闭数据库连接,具体该close实现可见上面的两个Connection代理类,其实只是告诉连接池,该Connection已经用完了,可以被再次利用了
}catch(Exception ex){
ex.printStackTrace();
}
㈦ java 在tomcat的context.xml里配置了连接池,要如何在代码里使用它。
ApplicationContext.xml中配置
<!-- 通过JNDI 使用应用服务器 的Connection Pool-->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/数据源的name"/>
</bean>
<!-- jdbcTemplate -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
㈧ java应用程序不能使用tomcat的连接池吗
首先tomcat需要配置系统环境变量!!变量名:JAVA_HOME 变量值:jdk的根目录,例如 C:\j2sdk1.4.2_07
其次如果不能运行的话,在我的电脑--右键管理--服务--把相关的oracle的服务改为手动。以免端口冲突!
如果在eclipse里运行tomcat的话,设置一下窗口---首选项里的tomcat的版本和路径!
最后还不行的话!!!在C:WINDOWS\SYSTEM32\DRIVER\ETC\lmhosts.sam里的大约94行左右的端口8080设置为其他!
试试看。祝你成功!
㈨ java 数据源连接池在tomcat启动完成之前配置好是为什么
首先tomcat也是一个java程序,启动时也是逐一启动。连接池是java连接池只是调用tomcat中的api,当tomcat启动一半可能就已经加载完了。
当以应用程序方式启动tomcat时是可以看到启动信息的,每一条信息都可以在tomcat目录中找到对应的类。
如果是项目当中的web.xml则肯定是web.xml先。
㈩ tomcat连接池
因为使用了数据源连接池,则数据库连接是由tomcat来创建,因此你只能将连接jar包放入到tomcat中才能使tomcat在启动时通过包中的类创建连接.
如果放到你的项目里,tomcat本身是找不到这个连接包的