相关疑难解决方法(0)

在Tomcat中启用Context reload ="true"时,JDBC连接池将耗尽连接

我正在Eclipse Juno中开发Java EE Web应用程序.我已将Tomcat配置为使用JDBC连接池(org.apache.tomcat.jdbc.pool)以及PostgreSQL数据库.以下是我的项目的META-INF/context.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <!-- Configuration for the Tomcat JDBC Connection Pool -->
    <Resource name="jdbc/someDB"
        type="javax.sql.DataSource"
        auth="Container"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost:5432/somedb"
        username="postgres"
        password="12345"
        maxActive="100"
        minIdle="10"
        initialSize="10"
        validationQuery="SELECT 1"
        validationInterval="30000"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
        abandonWhenPercentageFull="50" />
</Context>
Run Code Online (Sandbox Code Playgroud)

我的应用程序使用Eclipse部署到Tomcat,在Tomcat的context.xml中,属性reloadable设置为"true",以便在检测到更改时自动重新加载Web应用程序:

<Context reloadable="true">

我注意到,每次上面提到的自动重新加载时,都会保留10个与PostgreSQL db的连接(因为在webapp的context.xml中,initialSize ="10").因此,在10次更改后抛出PSQLException:

org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
...
Run Code Online (Sandbox Code Playgroud)

如果我手动重启Tomcat - 一切都很好,只保留10个连接.

有没有人知道解决这个问题的方法,所以有可能将reloadable设置为"true"并且不会在每次重新加载上下文时导致更多连接汇集?

非常感谢任何帮助.

PS Apache Tomcat版本7.0.32

java eclipse tomcat connection-pooling jdbc

29
推荐指数
1
解决办法
2万
查看次数

标签 统计

connection-pooling ×1

eclipse ×1

java ×1

jdbc ×1

tomcat ×1