Назад | Перейти на главную страницу

веб-приложение не может подключиться к базе данных

У меня есть веб-приложение, которое обращается к MySQL, используя Hibernate в качестве поставщика JPA. Хотя с моей установкой для разработки все в порядке, после развертывания 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.xml есть ссылка на ресурс). Что касается MySQL, он настроен на прослушивание 127.0.0.1, и указанный выше «правильный пользователь» имеет все необходимые привилегии (на localhost и 127.0.0.1).

Кто-нибудь знает менее обычные причины "Невозможно открыть соединение"?

Полная трассировка стека

В моем случае оказалось, что другой админ отказал ALL: ALL в hosts.deny и hosts.allow был пуст. Размещение mysqld: 127.0.0.1 в hosts.allow исправил проблему.

Для справки, вот все возможные причины ошибок, подобных описанной мной:

  • localhost может не подключаться согласно hosts.allow и hosts.deny
  • Драйвер JDBC недоступен для tomcat
  • База данных настроена на запрет сетевых подключений
  • База данных не запущена

В каждом из этих случаев полная трассировка стека будет немного отличаться. Отсутствующий драйвер будет более очевиден в трассировке стека, чем другие причины, перечисленные здесь.

Пожалуйста, предложите любые элементы, отсутствующие в приведенном выше списке.