公司原来使用dbcp连接池连接数据库,但是在测试过程中发现dbcp存在连接未释放问题,导致数据库连接占满。
之后在proxool和c3p0之间,我们选择了前者,因为前者在相对后者效率会高一些(网上资料,时间原因,未做验证)。
产品支持多数据库,oracle下,一些正常,但是切换到sybase之后,程序启动开始报:
com.sybase.jdbc3.jdbc.SybSQLException: SET CHAINED command not allowed within multi-statement transaction. at com.sybase.jdbc3.tds.Tds.processEed(Tds.java:2942) at com.sybase.jdbc3.tds.Tds.nextResult(Tds.java:2246) at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(ResultGetter.java:69) at com.sybase.jdbc3.jdbc.SybStatement.nextResult(SybStatement.java:220) at com.sybase.jdbc3.jdbc.SybStatement.nextResult(SybStatement.java:203) at com.sybase.jdbc3.jdbc.SybStatement.updateLoop(SybStatement.java:1804) at com.sybase.jdbc3.jdbc.SybStatement.executeUpdate(SybStatement.java:1787) at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeUpdate(SybPreparedStatement.java:116) at com.sybase.jdbc3.tds.Tds.setOption(Tds.java:1278) at com.sybase.jdbc3.jdbc.SybConnection.setAutoCommit(SybConnection.java:1011) at org.logicalcobwebs.proxool.ConnectionResetter.reset(ConnectionResetter.java:288) at org.logicalcobwebs.proxool.ConnectionPool.resetConnection(ConnectionPool.java:918) at org.logicalcobwebs.proxool.ProxyConnection.close(ProxyConnection.java:237) at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:134) at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87) at com.sybase.jdbcx.SybConnection$$EnhancerByProxool$$4880ae47.close(<generated>) at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:313) at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:274) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doCleanupAfterCompletion(DataSourceTransactionManager.java:316) at org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion(AbstractPlatformTransactionManager.java:989) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:782) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy26.queryByFilter(Unknown Source)
根据网上的资料,该问题产生的原因是sybase开启事务后,需要手动的关闭事务,而项目新版本使用spring的事物管理,所以尚未找到由spirng提供的解决方案。
搜索其他解决方案,有资料显示proxool需要配合使用jtds驱动,更换项目驱动,问题解决。
JTDS是一个开放源代码的100%纯Java的,用于JDBC 3.0驱动Microsoft SQL Server (6.5 ,7 ,2000和2005版本)和Sybase(10 ,11 ,12 ,15 版本)的驱动程序 。 JTDS是基于freetds的,并且是目前最快的生产准备JDBC驱动程序为SQL Server和Sybase 。 JTDS完全与JDBC 3.0兼容,支持只向前的,和可滚动/可更新的结果集(ResultSets)中并行(完全独立)语句,并且可实施所有databasemetadata和resultsetmetadata方法。 http://sourceforge.net/projects/jtds/
相关推荐
本文将深入探讨在使用`Proxool`连接Sybase数据库时处理事务的一些常见问题及解决方案。 首先,`Proxool`是一个轻量级的数据库连接池实现,它提供了灵活的配置选项和监控功能,以适应各种项目需求。当遇到“使用...
Spring中使用proxool的配置 Spring中使用proxool的配置Spring中使用proxool的配置 Spring中使用proxool的配置
初始化后,我们可以使用Proxool提供的`getConnection()`方法获取数据库连接,如下所示: ```java Connection conn = DriverManager.getConnection(url); // 执行SQL操作... conn.close(); ``` 注意,连接使用...
Java 使用 Proxool 连接 MySQL 数据库是一个常见的任务,特别是在需要管理多个数据库连接或者希望实现连接池功能的场景下。Proxool 是一个轻量级的数据库连接池,它提供了一种简单的方法来管理和控制数据库连接,以...
**Proxool的配置与使用** 1. **添加依赖**: 在项目中,首先需要引入Proxool的JAR包,可以通过Maven或Gradle等构建工具来管理依赖。 2. **配置连接池**: 在`web.xml`文件中配置Proxool的属性,如数据库URL、用户名...
标题 "proxool 的使用配置" 暗示我们将探讨一个名为 Proxool 的数据库连接池的配置和使用方法。Proxool 是一个轻量级、高效的开源 Java 数据库连接池,它提供了一种灵活的方式来管理和控制数据库连接。在这个主题中...
本篇文章将详细讲解如何配置Hibernate框架以使用Proxool连接池。 首先,我们需要了解Hibernate和Proxool的基本概念。Hibernate是一个流行的Java ORM(对象关系映射)框架,它简化了Java应用与数据库之间的交互,...
使用完毕后,连接会被返回到池中,供其他线程重复使用。这种机制减少了数据库连接的创建和关闭,从而降低了系统的整体负载。 **配置Proxool** 在使用Proxool之前,你需要在应用程序的配置文件中设置相关的参数,...
使用完毕后,必须将连接归还给连接池,以便其他线程可以复用。这个过程是透明的,通常通过JDBC的`getConnection()`和`close()`方法实现。 5. **连接池监控** Proxool提供了监控工具,可以查看连接池的状态,包括...
标题中的"proxool-0.9.1.jar"和"proxool-cglib.jar"是两个重要的Java档案文件,它们是Proxool项目的组件。Proxool是一个开源的数据库连接池解决方案,它允许开发者在Java应用程序中高效地管理数据库连接。数据库连接...
5. **max-connections**: 设置连接池的最大连接数,当达到这个数值后,如果还有新的请求,Proxool会排队处理。 6. **idle-test-period**: 指定在多长时间内未使用的连接将被测试是否仍然有效,以防止空闲连接失效。...
3. 在Java代码中,通过Proxool提供的API获取数据库连接,使用完毕后归还到连接池。 4. 可能会有一个静态块或者单例工厂来确保Proxool连接池的初始化和唯一性。 理解并掌握Oracle Proxool的使用,可以帮助开发者更...
而"proxool-cglib.jar"则可能包含了CGLIB(Code Generation Library),这是一个强大的代码生成库,常用于Java的动态代理和类增强,Proxool可能使用CGLIB来实现对数据库驱动的动态代理,以便监控和控制数据库操作。...
proxool数据库连接池
标题中的"proxool-0.9.1.jar"和"proxool_cglib-0.9.1.jar"是两个Java库文件,它们是Proxool项目在0.9.1版本时的实现。Proxool是一个开源的数据库连接池,它提供了一种灵活且高效的解决方案来管理数据库连接。在Java...
这样,当应用程序需要数据库连接时,可以从Proxool的连接池中获取,使用完毕后再归还,有效地提高了系统的并发处理能力和资源利用率。 在提供的压缩包文件中,"proxool-0.9.1"可能是Proxool的源码或文档,用于深入...
5. 使用`Mybatis`:完成以上步骤后,`Mybatis`将使用`Proxool`作为其数据源。你可以像平常一样使用`SqlSessionFactory`和`SqlSession`进行数据库操作。 6. 关闭连接池:在应用关闭时,别忘了释放`Proxool`的资源。 ...
`oracle proxool jar` 是包含Oracle Proxool库的JAR文件,它是使用Proxool连接池的关键组件。这个JAR包包含了所有必要的类和资源,使得开发者可以在Java应用中集成Proxool,以便管理与Oracle数据库的连接。 `jdbc ...
本篇文章将深入探讨如何在Spring框架中配置和使用Proxool。 首先,我们需要了解Proxool的基本概念。Proxool是一个轻量级的数据库连接池,它通过维护一定数量的数据库连接来复用,从而避免频繁创建和关闭连接带来的...
在本配置中,我们将探讨如何使用Proxool来配置MySQL数据库,以解决8小时连接时限问题,并方便地集成到Tomcat服务器中。 **1. Proxool简介** Proxool是一个灵活、高效的Java数据库连接池,它支持多种数据库,包括...