2010-10-04 9 views
7

Mi configuración: Apache 2.2 + Tomcat 6.0 @ Windows 2008 R2 de 64 bitspágina vacía en lugar de la página de error Tomcat encargo

  • páginas web estáticas:/
  • servlet:/foo
  • Tomcat y Apache están conectados por mod_jk
  • 404.jsp se coloca en tomcat \ webapps \ ROOT

Tomcat \ conf \ web.xml:

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

apache \ conf \ adicional \ httpd-ssl.conf:

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

Al abrir https://...../404.jsp aparece mi página de error personalizada. Pero cuando abro https://...../foo/nonexisting.html, se muestra una página vacía.

Si elimino el código <error-page>...</error-page> de web.xml y abro https://...../foo/nonexisting.html, se muestra el propio 404 de tomcats.

¿Alguna pista?

Respuesta

1

Por lo que puedo ver, los errores de webapps no se pueden manejar con páginas de error colocadas en ROOT. Ahora coloco el 404.jsp en cada aplicación web (/foo/404.jsp, /bar/404.jsp, ...) y ahora funciona. Puedo eliminar de forma segura el 404.jsp en ROOT, pero si elimino el 404.jsp en/foo o/bar, se publicará una página en blanco si aparece un 404 en cualquiera de las aplicaciones web. O bien tomcat ignora el elemento principal/en la "ubicación" o el contenido de este elemento se agrega en la ruta de acceso de la 'llamada'.

-1

¿Muestra exactamente la página 404 no encontrada o más? Porque algunos otros códigos de error también sirven como 400,401,403,500. un vistazo a este enlace para este http://docs.yahoo.com/docs/writeus/error.html

Si tiene cualquier otra añaden que los códigos de error en el archivo web.xml Aslo. Espero que esto ayude. Codificación feliz ...

+0

? debe haber entendido mal mi problema – Alexander

0

Nota: Debe asegurarse de que la página que especifique no comience con un número (es decir, 404.jsp). Esto porque, según la sintaxis de Java, no puede iniciar un nombre de clase con un número.

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

Espero que ayude :-)

+0

para 404.jsp se genera un _404_jsp.java que compila a _404_jsp.class que se invoca sin problemas, por lo que esta no puede ser la razón – Alexander

0

Si funciona bien cuando se carga 404.jsp, y muestra una página en blanco cuando Tomcat en realidad trata de utilizar la página de manejar un error 404, podría significa que hay un error en el código fuente de 404.jsp que solo se desencadena al usar el objeto errorData.

Revise los registros. Estaba teniendo un problema de página en blanco similar y resultó que tenía un incorrect taglib URL.

EDITAR

También, JkMount no debería ser necesario, ya que Tomcat ya está generando estos 404 (es decir, no están en competencia de Apache).

+0

¡Gracias por la sugerencia de JkMount! – Alexander

0

Tuve este problema también, y resulta que el culpable fue que escribí el nombre de la raíz del contexto de la aplicación en la ubicación de la página de error. Es decir,

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

Considerando que es conveniente, por supuesto, han sido

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

como me respondí hace unos días: la ubicación se agrega a la ruta webapps, por lo que cuando se produce un 404 en la aplicación web con ruta/foo, entonces/foo/{location} se sirve, por lo que parece que no se puede especificar " páginas de error globales – Alexander

2

El JkMount debe tener el contexto como parámetro, por ejemplo:

JkMount /mycontext/* worker1 

continuación, las páginas se accede de esta manera:

https://mycontext/someservlet/ 

o

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

Me he enfrentado a este problema al ejecutar un proyecto web estático. He realizado la siguiente implementación, y me ha funcionado.

añadido las siguientes líneas en% CATALINA_HOME%/conf/web.xml

<error-page> 
    <error-code>404</error-code> 
    <location>/error_404.html</location> 
    </error-page> 
Cuestiones relacionadas