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

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

我有一个 Web 应用程序,它使用 Hibernate 作为 JPA 提供程序来访问 MySQL。虽然在我的开发平台上一切正常,但是一旦我将 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 应用程序在本地运行,因此我相信其配置是正确的(其 web.xml 中有一个资源引用)。至于 MySQL,它配置为监听 127.0.0.1,并且上面的“correctUser”具有所有必要的权限(在 localhost 上)127.0.0.1)。

有人知道“无法打开连接”的一些不常见原因吗?

完整堆栈跟踪

答案1

就我的情况而言,结果发现另一个管理员拒绝了ALL: ALL登录hosts.deny,并且hosts.allow登录信息为空。输入mysqld: 127.0.0.1登录信息后hosts.allow问题得到解决。

作为参考,以下是我所描述的错误的所有潜在原因:

  • localhost 可能无法按要求hosts.allow连接hosts.deny
  • JDBC 驱动程序不适用于 tomcat
  • 数据库配置为不允许网络连接
  • 数据库未运行

在每种情况下,完整的堆栈跟踪都会略有不同。缺少驱动程序在堆栈跟踪中比此处列出的其他原因更明显。

请建议上述列表中缺少的任何项目。

相关内容