2015-05-28 2 views
7

Мне нужна помощь в выяснении того, почему несколько моих веб-приложений периодически перебрасывают 404 ошибки при попытке воссоздать JSP. У одного из них есть JSP, доступ к которому осуществляется напрямую, а другой - сервлет, который пересылает JSP. Страницы работают большую часть времени, но иногда будут бросать 404. Если пользователь обновляет свой браузер 1-3 раза, страница начинает работать снова без каких-либо изменений.Почему мой Tomcat сервер бросает прерывистый 404 при компиляции JSP?

Вот пример ошибки, как показано в веб-браузере (Chrome): type: Status report message: /app_root/my_page.jsp description: The requested resource is not available

Проблема, кажется, связано с перекомпиляции страниц JSP. Файл .war и расширенный каталог не изменены. Есть всегда три ошибки в журналах, которые соответствуют каждой ошибке 404: WARNING: Failed to delete generated class file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.class] May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler removeGeneratedFiles WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java] May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler generateJava WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java]

Я бег Java 1.7 на Tomcat 7.0.53. Tomcat работает на сервере Windows 2008 R2.

Вот что я пробовал до сих пор, основываясь на информации, которую я нашел из Google. Однако 404 года продолжаются.

  1. Отключен Windows, индексация по всему каталогу Tomcat
  2. Выключен режим развития в моей производственной среде
  3. Увеличение modificationTestInterval в моем QA среды от значения по умолчанию (4 секунды) до 3600 (1 час) [Примечание: в настоящее время он установлен в 0, чтобы попытаться помочь мне воспроизвести проблему]
  4. Изменен владелец в рабочем каталоге Tomcat как тот же идентификатор, что и идентификатор, который работает службой.

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

Хотя эта проблема возникает на моих серверах prod и QA, это не происходит для меня на моем локальном экземпляре Tomcat. На самом деле, я еще не видел проблему с моей рабочей станции, даже при работе приложений QA и Prod. Этот вопрос видел только другие люди.

+0

Вы попытку удаляемый сгенерированный файл класса вручную при входе в систему как пользователь, с которым работает кот? – Rajesh

+0

Я просто попытался сделать это вручную. Он работал до тех пор, пока я сделал это с административными привилегиями: либо открытие cmd с помощью admin privs, либо ответ на всплывающее окно при удалении через проводник Windows. – Spiritis

+0

Отключение проверки на вирусы не помогло. Дальнейшее тестирование показало, что эта проблема возникает только тогда, когда сервлет отправляет JSP. Доступ к JSP напрямую работает нормально. Я просто изменил рабочий каталог, чтобы сделать учетную запись службы tomcat полностью контролируемой. Это позволяет мне удалять файлы с этим идентификатором без авторизации доступа администратора. – Spiritis

ответ

2

У меня была такая же проблема после развертывания .war на нашем сервере. Это те шаги, которые я следовать, чтобы решить эту проблему:

1) Выключите сервер Tomcat

2) Перейти к <your tomcat directory> -> work -> Catalina -> localhost -> <your project> -> org -> apache -> jsp ->

3) вручную удалить .class и .java

4) Удалите файл .war и развернув папку с веб-сайта, имеющего проблему, в папке webapps.

5) Экспорт новый .war, и поместить его в WebApps папку.

6) Запустите службу tomcat еще раз.

После завершения развертывания сервера он будет автоматически перегенерировать удаленные файлы в каталоге «работа», и веб-сайт должен быть снова доступен без прерывистой ошибки 404.

Я надеюсь, что это сработает и для вас.

1

Проверьте полномочия этого файла или папки. Как правило, эта проблема вызвана отсутствием доступа к папкам.

2

Контейнер Tomcat кэширует файлы .java и .class, созданные парсером JSP, которые используются веб-приложением. Иногда они становятся поврежденными или не могут быть найдены. Это может произойти после обновления или обновления, содержащего изменения в JSP.

Решение является просто удалить рабочий каталог и перезапустить Tomcat

Смежные вопросы