Tomcat7 MySQL Ошибка соединения - PullRequest
0 голосов
/ 16 февраля 2011

Я столкнулся с недоумением.Я завершил создание jsf-веб-приложения, которое обеспечивает гибернацию и бесконечность с Tomcat7 и tomcat-jdbc-pool в качестве поставщика пула соединений.

Он развертывается на кластере Linode с 2 узлами - одним сервером базы данных и одним рабочим сервером.

Я могу запустить приложение в своей локальной среде, используя точно такую ​​же копию Tomcat7 (я буквально скопировал каталог tomcat и перенес его на сервер для отладки этой ошибки) - даже при подключении к экземпляру действующей базы данных,Все работает нормально.

Когда я пытаюсь запустить приложение с рабочего сервера, я получаю сообщение об ошибке MySQLIO:

Причина: java.net.ConnectException: соединение отклонено

Глядя дальше в журналах, я вижу:

Последний пакет, успешно отправленный на сервер, был 1 миллисекунду назад.Драйвер не получил никаких пакетов с сервера.com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: сбой линии связи

Я могу подключиться из командной строки на сервере prodapp просто отлично - даже используя tcp:

mysql -h db01 -u user -p --protocol=tcp

Но он просто не будет работать внутри контейнера Tomcat.Я пробовал разные вещи, но я действительно в тупике.Просто кажется странным, что я могу подключиться к серверу базы данных, используя ту же самую копию Tomcat7, локально, но при развертывании в производство та же копия tomcat7 не может подключиться - даже если я могу подключиться из командной строки на этом производственном сервере.Я в тупике.

Любая помощь очень ценится.

РЕДАКТИРОВАТЬ: Решил мою проблему, потратив на нее слишком много хорошей жизни.Ответ был глупым.Спасибо всем, кто пытался помочь.У меня есть приложение, настроенное в режиме dev и live, и пул соединений все это время читал режим dev.Что на самом деле сбивает с толку, так это то, что сессионный завод был модифицирован так, чтобы он действовал, чтобы он фактически достиг живой базы данных и инициализировал соединение при запуске, чтобы я мог видеть, как он подключается (и выполняет запросы метаданных в журнале mysql), но когда онна самом деле пошли, чтобы захватить соединение с Infispan, он взорвался.Ну хорошо - по крайней мере, это работает сейчас.Еще раз спасибо.

1 Ответ

0 голосов
/ 16 февраля 2011

Если вы подключаетесь к серверу базы данных MySQL из другого окна, вам необходимо явно предоставить разрешение для подключения этой учетной записи пользователя с этого IP-адреса.

Это можно сделать, находясь в командной строке:

GRANT ALL PRIVILEGES ON *.* TO 'username'@'ip_address'

РЕДАКТИРОВАТЬ: Предоставление всех разрешений для всех таблиц, как правило, не требуется, уточните, какие разрешения вы хотите предоставить (http://dev.mysql.com/doc/refman/5.1/en/grant.html)

.:

USE mysql;
SELECT * FROM users;

Приношу свои извинения, если я вам покровительствую, просто это самая распространенная проблема, с которой я сталкиваюсь.

...