![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
vovs |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.9.2006 Где: Черкассы Репутация: нет Всего: нет |
Доброго времени!
чтобы разобраться с сервлетами и хибернейтом попробовал сделать простенький проект. Проект делал в Eclipse Helios. Создал табличку в мускл(ид, имя, фамилия), подключился посредством хибернейт. написал сервлетик, запускаю, а томкат и по ссылке http://localhost:8080/servlet_db/usermanager мне выдает: HTTP Status 404 - Servlet UserManagerServlet is not available маппинги пересмотрел - вроде правильно... не могу найти причину.... хотя по тексту ошибки видно что ошибка где-то сверху... В директории org\test\ класс UserManagerServlet.class присутствует.. это мой первый опыт в использовании хибернейта и веб-приложения. Исходный код написан неграмотно - много повторов.. знаю..)) архив проекта прилагается- надеюсь на помощь.. SQL таблички, к которой я обращаюсь:
web.xml
Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||
|
|||||
afon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 5.4.2008 Где: Украина, Киев Репутация: нет Всего: 1 |
Могу только сказать : да, очень странно, вроже все правильно.
Попробуйте только удалить теги display-name и desription. С остальным не понятно. Вроде маппинг прописался, апп пытается найти указанный сервлет, но самого его не находит. Поверьте директорию, куда все собирается, действительно ли там есть web-inf/classes/org/test/UserManagerServlet И еще было бы не плохо его обозвать по-другому (и УРЛ тоже). Мистика, но мало ли. |
|||
|
||||
vovs |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.9.2006 Где: Черкассы Репутация: нет Всего: нет |
Удалил теги display-name и desription.
На результат это не повлияло абсолютно. класс UserManagerServlet.class находится в директории servlet_db\build\classes\org\test\ Директория servlet_db\WebContent\WEB-INF\ содержит папку lib(пустая) и файлик web.xml Закидывал туда classes\org\test\UserManagerServlet.class -- результат тотже. Все классы у меня лежат в директории servlet_db\build\classes\org\test\ я запускаю проект прямо в Эклипсе - может это еще принципиально.. попробовал запустить проект єкспортировав его и поместив в apache-tomcat-6.0.26\webapps\ -- тоже не помогло.. не находит он этот сервлет и все ( Это сообщение отредактировал(а) vovs - 2.7.2010, 00:28 |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Как разворачиваете? Какое имя war-архива? Откуда берется build в путях? Какая структура директорий должна быть у веб-приложения?
Вот в этой статье есть пример собирающегося веб-архива http://www.skipy.ru/technics/encodings_webapp.html. Посмотрите, какая структура директорий там получается. Можете приспособить для сборки своего приложения. Это сообщение отредактировал(а) Skipy - 2.7.2010, 09:31 |
|||
|
||||
MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Попробуйте ссылку http://localhost:8080/usermanager
|
|||
|
||||
vovs |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.9.2006 Где: Черкассы Репутация: нет Всего: нет |
2Skipy
Запускал проект в эклипсе(Run As - Run on Server) Пробовал экспортировать проект в *.war архив. Архив назвал servlet_db.war Поместил в директорию C:\apache-tomcat-6.0.26\webapps\ запустил Томкат, в логах нашел следующее: 02.07.2010 10:47:11 org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive servlet_db.war В браузере захожу по ссылке http://localhost:8080/servlet_db/ попадаю на index.jsp с единственной гиперссылкой, перенаправляющей меня на адрес http://localhost:8080/servlet_db/usermanager По адресу http://localhost:8080/servlet_db/usermanager вижу, что томкат не может найти сервлет: Servlet UserManagerServlet is not available Структура папок после деплоя: C:\apache-tomcat-6.0.26\webapps\servlet_db\ | ---META-INF | | | -----MANIFEST.MF ---WEB-INF | | | -----classes | | | | | -org | | | | | -test | | | | | -UserManagerServlet.class, userAddToBD.class, users.class | | | ---- lib(пустая) | | | --web.xml | -index.jsp Содержимое index.jsp:
Сейчас пытаюсь разобрать ваш пример и приспособить для своего приложения.. 2MaxPayneC HTTP Status 404 - /usermanager |
|||
|
||||
Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 2 Всего: 16 |
Взял Ваш код, закомментировал все, что связано с Hiberbate, собрал war, продеплоил на Tomcat 6.0.26 - сервлет работает. Попробуйте, если действительно так - ищите, где Hibernate ломает картину.
Несколько комментариев по самому коду. 1. Данные добавляются не через GET, а через POST. GET предназначен только для чтения. Иначе Вы нажмете F5 - и добавите пользователя еще раз. Плюс GET имеет серьезные органичения на объем передаваемой информации. После того, как отработал POST, пользователю посылается redirect (через sendRedirect) на страницу получения списка (которая работает через GET). Это является защитой от повторной посылки формы. 2. SessionFactory инициализируется ОДИН раз, при старте сервлета, а не в каждом методе - три (!!!) раза на запрос. В каждом запросе создается объект Session, которы потом передается во все методы, где нужно работать с базой. У Вас транзакция открывается снаружи методов сохранения и чтения (кстати, читать в транзакции необязательно), однако в методе сохранения Вы создаете новую сессию (и фабрику!) и открытая транзакция НИКАК не повлияет на Вашу запись данных. 3. Я не уверен, что Вы вправе закрывать Writer, который получили из HttpServletResponse. Дело в том, что в него потом могут дописывать что-то фильтры (имеют полное право и этим часто пользуются - например, вся обвязка страницы генерируется фильтром, а doGet генерирует только таблицу с данными). Вообще правило - не закрывайте то, что открывали не Вы. 4. Вот это сравнение - ServletException.class.isInstance(ex) - переписывается проще: ex instanceof ServletException 5. У Вас поломана разметка - забыли угловые скобки на кнопке в форме. Но это мелочь. Это сообщение отредактировал(а) Skipy - 2.7.2010, 16:08 |
|||
|
||||
vovs |
|
||||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.9.2006 Где: Черкассы Репутация: нет Всего: нет |
Спасибо за подробное пояснение!
Я попробовал настолько хватает знаний учесть Ваши замечания. Пока что не до конца разобрался с пунктом №1. Я разделил между методами GET и POST прорисовку и добавление информации. Но получил очередную ошибку. Также не до конца разобрался с редиректом. Ниже привожу листинг переделанного сервлета и класса, где происходит инициализация SessionFactory. А также текст ошибки.. Класс HibUtil
Сервлет
Ошибка, которую выдает Томкат:
53 строка:
80 строка:
Как же мне правильно проинициализировать класс utils.HibUtil? |
||||||||||
|
|||||||||||
vovs |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 22.9.2006 Где: Черкассы Репутация: нет Всего: нет |
Спасибо всем за советы. Разобрался. Проект работает.Ура
![]() Проблема была с *.jar |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |