DBCP2使用jtds中出现AbstratMethodError的问题

来源:互联网 发布:免费刷空间留言软件 编辑:程序博客网 时间:2024/06/08 07:09
在整合ssm框架的过程中,要使用到jtds-sql server and sybase的驱动;但该驱动总是在dbcp2.x数据源中出现AbstratMethodError的问题;奇怪的是在dbcp1.x中是没有问题的。经过一上午的折腾,各种查资料,最终发现配置dbcp2数据源时,validationQuery是必须要配置的。validationQuery是用来验证数据库连接的查询语句,这个查询语句必须是至少返回一条数据的SELECT语句。每种数据库都有各自的验证语句,下表中收集了几种常见数据库的validationQuery,sybase同SQL server。
DataBasevalidationQueryhsqldbselect 1 from INFORMATION_SCHEMA.SYSTEM_USERSOracleselect 1 from dualDB2select 1 from sysibm.sysdummy1MySqlselect 1Microsoft SqlServerselect1postgresqlselect version()ingresselect 1derbyvalues 1H2select 1
以下为datasource的配置,仅供参考。

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"        destroy-method="close">        <property name="driverClassName" value="${driver}" />        <property name="url" value="${url}" />        <property name="username" value="${username}" />        <property name="password" value="${password}" />        <!-- 初始化连接大小 -->        <property name="initialSize" value="${initialSize}"/>        <!-- 连接池最大空闲 -->        <property name="maxIdle" value="${maxIdle}"/>        <!-- 连接池最小空闲 -->        <property name="minIdle" value="${minIdle}"/>        <!-- 最大活动连接数 -->        <property name="maxTotal" value="${maxTotal}"/>        <!-- 获取连接最大等待时间 -->        <property name="maxWaitMillis" value="${maxWaitMillis}"/><!-- 数据库连接测试语句,dbcp2中不可省略 -->        <property name="validationQuery" value="${validationQuery}"/>    </bean>