【发布时间】:2011-01-11 02:35:54
【问题描述】:
我在服务器上安装了 Tomcat 和 PostgreSQL。我在尝试使用 c3p0 池从我的 servlet 连接到 PostgreSQL 数据库时遇到连接问题。
如果我在笔记本电脑上本地运行 Tomcat,我可以访问 DB。我也可以使用 psql(即命令行 sql 实用程序)从服务器连接到数据库。但是当我尝试将我的 servlet 部署到服务器并建立连接时,我收到以下错误:
java.sql.SQLException: Connections could not be acquired from the underlying database!
com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
...
com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
我应该检查什么来定位问题?这应该是一个微不足道的问题,但可能是由于凌晨 4 点。我错过了一些东西 :) 提前致谢!
PS:允许从所有网络接口连接到数据库。 PostgreSQL JDBC 驱动程序和 c3p0 池分布在 WAR 中。 Tomcat 配置是非常默认的。不使用 JNDI。
【问题讨论】:
-
您检查过 Postgres 日志中的身份验证失败吗?
-
感谢您的建议。实际上我发现了问题——服务器 Tomcat 上的安全策略不允许我连接。只有没有连接池的特殊测试 servlet 才发现问题。
标签: postgresql tomcat connection c3p0