⑴ JSP调用DBCP连接池的问题
1. 第一个问题是肯定的
2. 第二个问题也是肯定的,因为每次都重新运行jsp,重新new了连接池
3. 解决方案是你的连接池应该有一个全局对象存放,不管执行多少次jsp,这个对象通过单例引用即可
⑵ dbcp怎么监控程序使用数据库连接池
1.创建DbcpTest.java单元测试类
2.拷入所需jar包commons-dbcp-1.4.jar commons-pool-1.5.5.jar
3.创建如下代码,注意我们创建的是BasicDataSource 对象
4.测试结果
5.DBCP连接池还有一些属性可以设置,常用的如下:
6.以上算是一个DBCP的基本结构,
而常用的创建数据连接池是通过他的连接工厂类BasicDataSourceFactory 的createDataSource() 方法,它需要读取一个配置文件
7.新建dbcp.properties文件
8.添加如下代码,注意:配置文件中的键需要来自BasicDataSource的属性
9.测试结果如下:
10.总结步骤:
步骤阅读
⑶ 你好!如果用dbcp去连接,那我close的时候还是自己写吗,还是说有dbcp自带的什么方法。下面是我写的释放
不需要自己写,连接池根据连接情况自行关闭
⑷ dbcp2 怎么连接mysql并创建表
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:commons-dbcp.jar,commons-pool.jar,commons-collections.jar。
由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
⑸ dbcp连接池放回链接后再次拿出来地址为什么不一样,我只初始化一个。怎么打印判断两链接是同一个链接
1. 引入dbcp (选择1.4)
Java代码
<application-policyname="EncryptDBPassword">
<authentication>
<login-molecode="org.jboss.resource.security.SecureIdentityLoginMole"flag="required">
<mole-optionname="username">${username}</mole-option>
<mole-optionname="password">${password_encrypt}</mole-option>
<mole-optionname="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=${jndiName}</mole-option>
</login-mole>
</authentication>
</application-policy>
为了能达到同样的效果,切换为spring dbcp配置时,也有类似密码加密的功能,运行期进行密码decode,最后进行数据链接。
实现方式很简单,分析jboss的对应SecureIdentityLoginMole的实现,无非就是走了Blowfish加密算法,自己拷贝实现一份。
⑹ 如何使用dbcp连接mysql
1、把数据库驱动包 到 %CATALINA_HOME%\common\lib 下。 2、修改 %CATALINA_HOME%\conf\server.xml 文件,在 节点下添加: XML/HTML code?
⑺ Spring配置DBCP数据库连接池
<!-- 数据源配置,使用应用内的DBCP数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${datasource.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- Connection Pooling Info -->
<property name="initialSize" value="5" />
<property name="maxActive" value="100" />
<property name="maxIdle" value="30" />
<property name="maxWait" value="1000" />
<property name="poolPreparedStatements" value="true" />
<property name="defaultAutoCommit" value="false" />
</bean>
⑻ dbcp连接池配置详解
首先,明确连接、活动连接(连接正被使用)、空闲连接的概念
一、创建连接
1、初始化 2、空闲连接低于最小空闲minIdle
二、销毁连接
1、空闲连接数目高于最大空闲 2、活动连接被遗弃
三、回收行为
1、空闲连接回收器(定时执行)2、连接回收器(maxwait后触发)
initialSize 初始化连接数,即连接池启动时池子中的连接数目
maxActive 最大活动连接数,即连接池中可同时连接的最大数目
minIdle 最小空闲连接,连接池中最少的空闲的连接数,
低于这个数量时,意味着连接不够用了,会被创建新的连接
默认为0,该参数越接近maxIdle,性能越好,因为连接的创建和销毁,都是需要消耗资源的;
不宜太大,因为在机器很空闲的时候,也会创建低于minidle个数的连接,类似于jvm参数中的Xmn设置。
maxIdle 最大空闲连接
超过此参数时空闲连接将被释放,如果设置为负数表示不限制
默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置。
maxIdle 最大空闲连接
超过此参数时空闲连接将被释放,如果设置为负数表示不限制
默认为8个,maxIdle不能设置太小,因为假如在高负载的情况下,连接的打开时间比关闭的时间快,会引起连接池中idle的个数上升超过maxIdle,而造成频繁的连接销毁和创建,类似于jvm参数中的Xmx设置
maxWait 请求连接时,最长的等待时间。
单位ms,当没有可用连接时,连接池会等待连接释放,超过该时间限制会抛出异常,如果设置-1表示无限等待(默认为无限)。
⑼ 如何连接不同的数据源
现在常用的开源数据库连接池主要有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;