2010-10-04 4 views
7

Моя установка: Apache 2.2 + Tomcat 6.0 @ Windows 2008 R2 64-битнойПустые страницы вместо страницы ошибки пользовательских TOMCAT

  • статических веб-страниц:/
  • сервлет:/Foo
  • кот и апача связаны mod_jk
  • 404.jsp помещается в кот \ WebApps \ ROOT

TOMCAT \ конф \ web.xml:

<error-page> 
<error-code>404</error-code> 
<location>/404.jsp</location> 
</error-page> 

апач \ конф \ экстра \ HTTPD-ssl.conf:

JkMount /foo/* worker1 
JkMount /404.jsp worker1 

Когда я открываю https://...../404.jsp отображается моя персонализированная страница ошибки. Но когда я открываю https://...../foo/nonexisting.html, отображается пустая страница.

Если я удалю код <error-page>...</error-page> из web.xml и откройте https://...../foo/nonexisting.html, тогда появится tomcats 404.

Любые подсказки?

ответ

1

Насколько я могу видеть, ошибки webapps не могут обрабатываться с страницами ошибок, размещенными в ROOT. Теперь я помещаю 404.jsp в каждый webapp (/foo/404.jsp, /bar/404.jsp, ...), и теперь он работает. Я могу безопасно удалить 404.jsp в ROOT, но если я удалю 404.jsp в/foo или/bar, пустая страница будет использоваться, если 404 встречается либо в webapp. Любой tomcat игнорирует ведущий/элемент «location» или содержимое этого элемента добавляется по пути «вызов» webapp.

-1

Его показать ровно 404 страницы не найдено или еще? Поскольку некоторые другие коды ошибок также используются, например, 400,401,403,500. Посмотрите на эту ссылку для этого http://docs.yahoo.com/docs/writeus/error.html

Если у вас есть какой-либо другой добавить, что коды ошибок так же в файле web.xml. Надеюсь, это поможет. Счастливое кодирование ...

+0

? вы, должно быть, неправильно поняли мою проблему. – Alexander

0

Примечание: Вы должны быть уверены, что указанная вами страница не начинается с номера (например: 404.jsp). Это потому, что, согласно синтаксису Java, вы не можете запустить имя класса с номером.

http://www.jguru.com/faq/view.jsp?EID=492774

Надежда, что помогает :-)

+0

для 404.jsp генерируется _404_jsp.java, который компилируется в _404_jsp.class, который вызывается без проблем, поэтому это не может быть причиной – Alexander

0

Если он работает нормально при загрузке 404.jsp, и показывает пустую страницу, когда на самом деле пытается кот использовать страницу для обработки ошибки 404, это может означает, что в исходном коде 404.jsp есть ошибка, которая запускается только с помощью объекта errorData.

Проверьте журналы. У меня была аналогичная проблема с пустой страницей, и оказалось, что у меня был incorrect taglib URL.

РЕДАКТИРОВАТЬ

Кроме того, JkMount не должно быть необходимым, так как уже кот генерации этих 404-х (т.е. они не находятся в компетенции Apache).

+0

Спасибо за подсказку JkMount! – Alexander

0

У меня тоже была эта проблема, и оказалось, что виновником было то, что я ввел имя корня контекста приложения в местоположение страницы ошибки. То есть,

<error-page> 
<error-code>404</error-code> 
<location>/MyApp/404.jsp</location> 
</error-page> 

Принимая во внимание, что, конечно, должны были

<error-page> 
<error-code>404</error-code> 
<location>/404.jsp</location> 
</error-page> 
+0

, как я ответил сам себе несколько дней назад: местоположение добавлено к пути webapps, поэтому, когда 404 встречается в webapp с path/foo, тогда/foo/{location} обслуживается, поэтому кажется, что нельзя указать " глобальные "страницы ошибок – Alexander

2

Jkmount должны иметь контекст в качестве параметра, например:

JkMount /mycontext/* worker1 

то страницы, доступ к следующим образом:

https://mycontext/someservlet/ 

или

https://mycontext/foo/nonexisting.html 
0

Я столкнулся с этой проблемой при запуске статического веб-проекта. Я выполнил следующую реализацию, и это сработало для меня.

Добавлены следующие строки в% CATALINA_HOME%/CONF/web.xml

<error-page> 
    <error-code>404</error-code> 
    <location>/error_404.html</location> 
    </error-page> 
Смежные вопросы