Web应用程序无法连接到数据库

我有一个使用Hibernate作为JPA提供程序访问MySQL的Web应用程序。 虽然在我的开发平台上一切都很好,但是一旦我将WAR部署到我的服务器,我得到以下错误:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Cannot open connection 

开发机器运行Ubuntu 10.10和服务器10.04; 两者都使用提供的MySQL包和Apache的(不是Ubuntu的)tomcat6。 我有三倍以上的检查数据库正在运行,凭据是正确的,驱动程序是可用的。
我在tomcat的context.xml中有这个资源定义:

 <Resource name="jdbc/phenome_repository" auth="Container" type="javax.sql.DataSource" username="correctUserName" password="correctPassword" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/correctDatabaseName" /> 

由于Web应用程序在本地工作,我相信它的configuration是正确的(它的web.xml中有一个resource-ref)。 至于MySQL,它被configuration为在127.0.0.1上侦听,上面的“correctUser”具有所有必要的权限(在localhost 127.0.0.1上)。

有谁知道“不能打开连接”的不太常见的原因?

完整的堆栈跟踪

在我的情况下,事实certificate,另一个pipe理员拒绝ALL: ALL hosts.denyhosts.allow ALL: ALL为空。 在hosts.allow放置mysqld: 127.0.0.1 ,解决了这个问题。

作为参考,这里是所有错误的潜在原因,如我所描述的:

  • localhost可能无法按照hosts.allowhosts.deny连接
  • JDBC驱动程序不可用于tomcat
  • 数据库被configuration为禁止networking连接
  • 数据库没有运行

在每种情况下,完整的堆栈跟踪都会有细微的差别。 一个缺less的驱动程序将在堆栈跟踪比这里列出的其他原因更明显。

请build议从上面的列表中缺less任何项目。