`
阅读更多

 

用c3p0建立连接池,当第一次进行数据库连接的时候,需要初始化很长的时间,而且还会出现以下的错误,在网上搜了很多的东西,有改myeclipse内存配置的,有改Tomcat内存配置的,等等,可是都不管用;还有经常出现的是进行以下的配置

 

<property name="maxStatements" value="0" />
<property name="maxStatementsPerConnection" value="0" />

 可是最终问题还是没有解决,然后找到了一个说是配置初始化连接池的数目必须在min和max之间,然后配置是这样,应该不是这个问题,后来我又自己把initialPoolSize、 minPoolSize和maxPoolSize改成了比较小的数目,现在时不报错了。配置如下:

 

		<property name="maxPoolSize" value="5" />
		<property name="minPoolSize" value="1" />
		<property name="initialPoolSize" value="2" />

 虽然不报错,可是第一次连接数据库的时候还是很慢的,难道连接池不是在Tomcat启动的时候就已经初始化了吗?难道会是在进行第一次连接的时候进行初始化?请大家指点。。。

 

 

 

错误信息如下:

 

Managed Threads: 3

	Active Threads: 3
	Active Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@1366e7d (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@900995 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@6545b3 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2)
	Pending Tasks: 
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@c30cd3
Pool thread stack traces:
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main]
		java.net.SocketInputStream.socketRead0(Native Method)
		java.net.SocketInputStream.read(SocketInputStream.java:129)
		com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
		com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
		com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
		com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2452)
		com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:591)
		com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1070)
		com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
		com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
		com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
		sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
		sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
		sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
		java.lang.reflect.Constructor.newInstance(Constructor.java:513)
		com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
		com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
		com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
		com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
		com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
		com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
		com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main]
		java.net.SocketInputStream.socketRead0(Native Method)
		java.net.SocketInputStream.read(SocketInputStream.java:129)
		com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
		com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
		com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
		com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2452)
		com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:591)
		com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1070)
		com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
		com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
		com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
		sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
		sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
		sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
		java.lang.reflect.Constructor.newInstance(Constructor.java:513)
		com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
		com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
		com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
		com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
		com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
		com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
		com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
	Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main]
		java.net.SocketInputStream.socketRead0(Native Method)
		java.net.SocketInputStream.read(SocketInputStream.java:129)
		com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113)
		com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160)
		com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188)
		com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2452)
		com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:591)
		com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1070)
		com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2048)
		com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:723)
		com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
		sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
		sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
		sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
		java.lang.reflect.Constructor.newInstance(Constructor.java:513)
		com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
		com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
		com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
		com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
		com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
		com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
		com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
		com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
		com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
		com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

分享到:
评论

相关推荐

    jsp连接池详解及配置

    常见的JSP连接池实现有DBCP、C3P0、HikariCP等。以下以HikariCP为例,介绍配置步骤: 1. **引入依赖**:在项目中添加HikariCP的依赖库,例如在Maven的pom.xml文件中添加对应的依赖项。 2. **配置连接池**:在配置...

    数据连接池配置详细讲解

    1. **连接池类型选择**:市面上有许多成熟的数据连接池实现,如Apache的DBCP、C3P0,还有HikariCP、Druid等。不同的连接池有不同的性能特性和配置选项,应根据项目需求和性能要求选择合适的连接池。 2. **初始化...

    关闭tomca报错t,网络整理

    - 使用连接池如C3P0、HikariCP或Apache DBCP等,可以有效地管理数据库连接,避免内存泄漏。确保在web.xml或Spring配置文件中正确配置了连接池,并在Web应用停止时关闭连接池。 3. **Tomcat配置**: - Tomcat的`...

    java连接oracle的数据库驱动

    对于大型企业级应用,使用连接池如C3P0、HikariCP或Apache DBCP等可以提高性能和资源利用率。 总之,Java通过Oracle JDBC驱动与Oracle数据库的交互是一个标准的过程,包括加载驱动、建立连接、执行SQL和处理结果。...

    tomcat报错Service Temporarily Unavailable tomcat解决方式

    我们可以尝试使用不同的连接池,例如 C3P0,来解决这个问题。 五、解决办法 解决 Tomcat 报错 Service Temporarily Unavailable 的方法有多种,包括: * 重启服务器 * 配置 Tomcat 和 Apache 的通信参数 * 解决 ...

    PB11.5 通过JDBC连接MySQL

    7. **性能优化**:考虑到性能,可以使用连接池来管理数据库连接,例如Apache的DBCP或C3P0。连接池允许重用已打开的连接,减少数据库的开销。 8. **安全考虑**:避免在代码中硬编码数据库凭证,这可能导致安全风险。...

    JEECMS v2.4.1 beta 系统程序.rar

    在技术主要对数据库连接池组件进行的更换,采用了c3p0连接池组件,有效解决了由于同时运行多个jeecms项目时导致的jar包冲突问题。 以下是JEECMS v2.4.1 beta版更新的详细内容: 1、修正了后台用户密码修改的问题...

    Java Web连接Mysql数据库

    例如,Apache的DBCP或C3P0,或者Spring框架提供的HikariCP。这些连接池可以高效地重用和管理数据库连接,提高系统性能。 数据库操作主要包括增删查改(CRUD)操作,这需要用到SQL语句。例如,插入数据: ```sql ...

    jdbc链接gbase数据库的驱动包

    此外,GBase 8.3驱动还支持连接池管理,例如使用C3P0、Apache DBCP或HikariCP等第三方库,以提高数据库操作的效率和系统的稳定性。连接池可以复用已建立的连接,避免频繁创建和关闭连接带来的性能开销。 总之,...

    mysql5.6连接驱动jaf,可处理报错java.sql.SQLException: No suitable driver

    在Java编程中,数据库连接是应用开发不可或缺的一部分。在MySQL 5.6版本中,我们需要一个合适的驱动来建立...例如,Apache的DBCP或C3P0都是常用的Java连接池库。同时,注意处理异常和关闭连接,以保持良好的编程习惯。

    从零开始MySQL PDF资源

    常见的数据库连接池有DBCP、C3P0、Druid等等,大家如果有兴趣的话,可以去搜索一下数据库连接池的使用例子和代码,甚或探索一下数据库连接池的底层原理,但这个不是我们专栏的重点,我们就不会拓展了。毕竟我们专栏...

    java面试

    例如,C3P0、Apache DBCP、HikariCP等。 10. **Hibernate工作原理**:Hibernate通过配置文件与数据库建立映射关系,创建SessionFactory,然后通过SessionFactory创建Session对象,进行CRUD操作。事务管理和对象关系...

    jdbc知识带注释

    在实际应用中,使用连接池(如C3P0、HikariCP、Apache DBCP)管理数据库连接,可以提高性能并避免资源泄露。 以上就是JDBC的基本使用流程和关键知识点。通过这些概念和方法,Java开发者能够高效地实现与MySQL等...

    MySql+Oracle数据库Java驱动jar包

    在实际开发中,为了提高代码的可维护性和适应性,开发者通常会使用数据库连接池(如C3P0、Apache DBCP、HikariCP等)来管理和复用数据库连接,避免频繁创建和关闭连接带来的性能开销。 总的来说,MySQL和Oracle...

    oracle jdbc dirver

    7. **优化性能**:使用连接池(如C3P0、HikariCP)可以有效地管理数据库连接,提高应用性能。此外,还可以配置批处理、预编译语句等优化策略。 8. **异常处理**:在处理数据库操作时,必须捕获SQLException和其他...

    解决当MySQL数据库遇到Syn Flooding问题

    - 数据库连接池配置优化:在Java的DBCP或C3P0等连接池中,调整`testWhileIdle`为`false`,`minIdle`为5,`maxAge`为30000,`initialSize`为1,`timeBetweenEvictionRunsMillis`为5000。这确保连接池始终有5个空闲...

Global site tag (gtag.js) - Google Analytics