Развернутое веб-приложение Tomcat 6 не может подключиться к экземпляру Amazon RDS Oracle

Мы создаем веб-приложение на основе Java Spring, которое обращается к серверной части Oracle через Hibernate.

Вот наш стек/инструменты:

  • Томкэт 6
  • Мавен 3
  • Весна (мвк, веб, орм) 3.2.0
  • Спящий режим 4.1.9
  • Oracle 11g, выпуск 2
  • Интеллидж ИДЕЯ.

Чтобы получить доступ к RDS с наших локальных компьютеров, мы перенаправляем порты с локального хоста: 2521 на имя нашего-rds-instance.wercytsdzeszx.us-east-1.rds.amazonaws.com:1521.

Мы запускаем встроенный Tomcat с помощью плагина tomcat6-maven. Наша конфигурация Maven для тестирования: чистый пакет tomcat6:run-war-only. Это развернет файл WAR на http://app.local:8080/наше-имя-приложения/ и разрешите нам протестировать сайт по этой ссылке.

Используя Hibernate, мы можем успешно подключиться к экземпляру RDS, когда мы запускаем веб-приложение из наших локальных встроенных экземпляров Tomcat.

ОДНАКО — вот где это становится глупо — когда мы развертываем файл WAR в нашем экземпляре EC2 (который является частью группы безопасности, имеющей доступ к экземпляру RDS), приложение больше не может получить доступ к базе данных. Мы получаем эту ошибку:

org.hibernate.exception.GenericJDBCException: не удалось открыть соединение

Это сбивает с толку. Мы установили SQLPlus на наш экземпляр EC2, на котором запущен Tomcat, и мы можем подключиться к экземпляру RDS, поэтому у экземпляра EC2 есть доступ для подключения к экземпляру RDS.

Наша локальная строка подключения будет выглядеть примерно так: *jdbc:oracle:thin:USER_NAME/password@localhost:2521/sid*

Строка подключения нашего экземпляра EC2 (промежуточного) будет выглядеть следующим образом:

Я могу предоставить более подробную информацию, но сначала я хотел изложить основную проблему, чтобы не мутить воду бесполезной информацией.

Я ценю все отзывы.

Тони


person tonedogfive    schedule 07.05.2013    source источник
comment
Используете ли вы какой-либо пул соединений, например Apache DBCP?   -  person Viccari    schedule 08.05.2013
comment
Нет, на данный момент мы не используем пул соединений.   -  person tonedogfive    schedule 08.05.2013


Ответы (1)


Я решил эту проблему.

Оказывается, причиной была ошибка часового пояса Oracle (ORA-01882: часовой пояс не найден). Сервер Ubuntu, который мы используем для нашего AMI EC2, имел часовой пояс по умолчанию, который, я думаю, не распознавался Java или Oracle. Я видел эту ошибку, но по незнанию подумал, что она не может быть связана с ошибкой подключения к базе данных.

Мы использовали команду dpkg-reconfigure tzdata, чтобы установить правильный часовой пояс, и перезапустили Tomcat. Это позволило нам успешно подключиться к базе данных Oracle.

Тони

person tonedogfive    schedule 08.05.2013