Веб-приложение не может установить соединение с базой данных - PullRequest
1 голос
/ 10 августа 2011

Мое приложение при работе на Tomcat не может подключиться к моей базе данных при развертывании как .war в папке webapps, но оно может подключиться, когда я запускаю его через Eclipse напрямую.Код в обоих случаях одинаков.Кроме того, другие приложения в папке webapps, которые изначально могли подключаться к базе данных, больше не могут этого делать.Код jdbc корректен, так как я тестировал его в автономных приложениях или при запуске через eclipse, но не при обращении к нему, скажем, в Chrome, используя localhost.Что случилось с моим сервером Tomcat?

Примечание. Драйвер JDBC является MS Access.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Код в обоих случаях одинаков.

Нет, это не так;если бы он был точно таким же, вы бы правильно подключились.

, но он может подключиться, когда я запускаю его через Eclipse напрямую

Означает ли это, что у вас естьосновной метод, который управляет кодом, который подключается правильно?То, как вы это делаете, обычно отличается от веб-приложения - вы это знаете, верно?

Если бы вы могли опубликовать исключение или сообщение в журнале, это бы очень помогло.

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

  1. JAR-файл драйвера JDBC недоступен, если вы работаете в одной конфигурации;в этом случае вы увидите ClassNotFoundException.
  2. Вы не настроили источник данных JNDI в Tomcat должным образом.
  3. Вы не поместили JAR-файл драйвера JDBC в каталог Tomcat / lib.

Возможны и другие возможности.

ОБНОВЛЕНИЕ:

Поскольку вы используете Access и не предоставляете никакой другой информации, я предполагаю, что вы используете относительный путь к файлу для доступа к файлу Access .mdb.Ваше приложение командной строки, которое успешно работает в Eclipse, работает, потому что вы указываете относительный путь к файлу, который является правильным относительно корня проекта.При развертывании в Tomcat этот относительный путь больше не является правильным, поэтому ваше приложение больше не может найти базу данных.

Похоже, вы не печатаете трассировку стека для ошибок, поэтому вы теряетена информацию, которая может помочь вам понять это.

Microsoft Access не многопользовательская база данных.Веб-приложение, работающее на Tomcat, безусловно, многопоточное.Вы не должны использовать Access для веб-приложения.Я хотел бы рассмотреть возможность перехода на другую базу данных.

0 голосов
/ 10 августа 2011

Во-первых, вам нужно проверить путь к файлу вашей базы данных.На самом деле, я считаю, что это должен быть абсолютный путь для правильной работы tomcat.Самое простое, что нужно сделать, это поместить файл базы данных в C: \ data или аналогичный, а затем жестко прописать путь в своем коде.Конечно, файл будет за пределами вашей войны и, следовательно, не будет переносимым (т. Е. Развертываемым на удаленном сервере).

Во-вторых, вам нужно убедиться, что драйвер JDBC доступен.Если вы используете Class.forName в своем коде для загрузки драйвера, вам нужно только убедиться, что jar, содержащий драйвер, находится в пути к классу tomcat (который будет включать в себя каталог lib вашего веб-приложения).Если вы используете подход флага JDM -Djdbc.drivers, вам необходимо добавить его в сценарии запуска tomcat.

...