Java 已达到MaxOpenPreparedStatements限制

Java 已达到MaxOpenPreparedStatements限制,java,oracle,jdbc,apache-commons-dbcp,Java,Oracle,Jdbc,Apache Commons Dbcp,只有在应用程序运行几天后,代码中的某些数据库更新才会出现此异常。有些请求通过了,有些请求(相同的java代码)失败了 数据源配置: <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" lazy-init="true" scope="singleton"> <property name="driverClassN

只有在应用程序运行几天后,代码中的某些数据库更新才会出现此异常。有些请求通过了,有些请求(相同的java代码)失败了

数据源配置:

<bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close" lazy-init="true" scope="singleton">
        <property name="driverClassName" value="${jdbc.driver.class}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="poolPreparedStatements" value="true"/>
        <property name="maxOpenPreparedStatements" value="20"/>
    </bean>


有各种可用的连接。我怎样才能修好它?谢谢。

这意味着您可能没有正确关闭资源。您应该在创建它们的方法范围内的finally块中执行此操作。

您肯定准备了未正确关闭的语句。内存转储可以帮助您找到这些文件。

请在配置文件中尝试以下操作:

db.pool.statements.enable=false

可以设置负值。设置负值会在缓存中创建无限打开的准备语句

db.pool.statements.enable=false