Sugerencias para la resolución de problemas con JSP (JavaServer Pages)
Utilice estas sugerencias para resolver los problemas con JSP (JavaServer Pages).
El código fuente de JavaServer Pages mostrado por el servidor web
Si comparte la raíz del documento de WebSphere Application Server con la raíz de documento del servidor web, se puede producir una exposición de seguridad ya que el servidor web podría mostrar el archivo de origen JSP (JavaServer Pages) como texto sin formato.
- Problema
- Puede utilizar el conjunto de reglas del plug-in del servidor Web de WebSphere para determinar si WebSphere Application Server manejará una solicitud determinada. Cuando una solicitud de entrada no puede coincidir con estas reglas, el plug-in de servidor web devuelve el control al servidor web de forma que el servidor web puede cumplir la solicitud. En este caso, la cabecera de host desconocido provoca que el plug-in de servidor web devuelva el control al servidor web porque las reglas no indican que el servidor WebSphere Application Server deba manejar la solicitud. Por lo tanto, el servidor web busca la solicitud en la raíz de documento del servidor web. Puesto que el archivo de origen JSP está almacenado en la raíz del documento del servidor web, el servidor web encuentra el archivo y lo muestra como texto sin formato.
- Solución sugerida
- Mueva el archivo de origen JSP de WebSphere Application Server fuera de la raíz de documento del servidor web. A continuación, esta solicitud llega con la cabecera de host desconocido, el plug-in devuelve el control al servidor web y el archivo de origen JSP no se encuentra en la raíz del documento. Por lo tanto, el servidor web devuelve un error 404 No se ha encontrado el archivo, en lugar del archivo de origen JSP.
Problemas al visualizar los caracteres del juego de caracteres de doble byte (DBCS) cuando se utiliza la directiva @include.
Los archivos JSP (JavaServer Pages) que utilizan la directiva @include pueden sufrir problemas cuando visualizan caracteres del juego de caracteres de doble byte (DBCS). Es posible que sea necesario modificar algunas aplicaciones que se migran a WebSphere Application Server Versión 6.0 y posterior para que cumplan con la especificación JSP 2.0 debido a problemas de compatibilidad con versiones anteriores. La especificación JSP 2.0 requiere que cada recurso incluido estáticamente debe establecer una codificación de páginas o un tipo de contenido porque la codificación de caracteres para cada archivo se determina por separado incluso si un archivo incluye otro utilizando la directiva include.
Problemas con el motor JSP (JavaServer Pages)
- Determine si hay otros recursos como, por ejemplo, archivos .html o servlets que se estén solicitando y visualizando correctamente. Si no es así, es probable que el nivel del problema sea más profundo, por ejemplo, que sea a nivel del servidor HTTP.
- Si se están visualizando correctamente otros recursos, determine si el
procesador JSP se ha iniciado normalmente:
Examine los registros de JVM del servidor que alberga los archivos JSP a los que está intentando acceder. Los mensajes siguientes indican que el procesador JSP se ha iniciado normalmente:
Si el procesador JSP no puede cargarse, aparecerá un mensaje como el siguienteEl procesador de extensiones [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] se ha inicializado satisfactoriamente. El procesador de extensiones [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] se ha asociado con los patrones [*.jsp *.jspx *.jsw *.jsv ].
en el archivo dir_raíz/logs/nombre_servidor/SystemOut.logNo se ha encontrado ningún procesador de extensiones para manejar las JSP. El procesador JSP no se ha definido. Se ignora : jspfilename.
Examine los registros del servidor que alberga los archivos JSP a los que está intentando acceder. Los mensajes siguientes indican que el procesador JSP se ha iniciado normalmente:
Si el procesador JSP no puede cargarse, aparecerá un mensaje como el siguienteEl procesador de extensiones [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] se ha inicializado satisfactoriamente. El procesador de extensiones [class com.ibm.ws.jsp.webcontainerext.JSPExtensionProcessor] se ha asociado con los patrones [*.jsp *.jspx *.jsw *.jsv ].
en los archivos de registro del servidor.No se ha encontrado ningún procesador de extensiones para manejar las JSP. El procesador JSP no se ha definido. Se ignora : jspfilename.
- Si el motor de JSP se ha iniciado con normalidad, es posible que el problema se deba al propio archivo JSP.
Es posible que la JSP no tenga una sintaxis de JSP válida y el procesador JSP no haya podido procesarlo. Examine el archivo dir_raíz/logs/nombre_servidor/SystemOut.log de la aplicación de destino de los mensajes de sintaxis de directiva JPS no válidos. Si aparecen errores similares al siguiente en un navegador significa que existe este tipo de problema:
Este ejemplo indica que a la línea 2, columna 1 del archivo JavaServer Pages nombrado le falta un atributo obligatorio para la acción jsp:include. Para otros errores de sintaxis se visualizan mensajes similares.Mensaje: /filename.jsp(2,1)JSPG0076E: Falta la página de atributos necesaria para el elemento jsp element jsp:include
Es posible que la JSP no tenga una sintaxis de JSP válida y el procesador JSP no haya podido procesarlo. Examine los archivos de registro del servidor de la aplicación de destino de los mensajes de sintaxis de directiva JPS no válidos. Si aparecen errores similares al siguiente en un navegador significa que existe este tipo de problema:
Este ejemplo indica que a la línea 2, columna 1 del archivo JavaServer Pages nombrado le falta un atributo obligatorio para la acción jsp:include. Para otros errores de sintaxis se visualizan mensajes similares.Mensaje: /filename.jsp(2,1)JSPG0076E: Falta la página de atributos necesaria para el elemento jsp element jsp:include
- Examine los archivos SystemErr.log del servidor de
aplicaciones de destino para ver si hay problemas de sintaxis Java™ no válida.
Si en un navegador aparecen mensajes similar al siguiente: Mensaje:
no se puede compilar la clase para JSP significa que existe este
tipo de problema. Encontrará la salida del mensaje de error del compilador Javac en el archivo SystemErr.log. Es posible que sea similar a lo siguiente:
JSPG0091E: Se ha producido un error en la línea: 2 en el archivo: /myJsp.jsp JSPG0093E: Error de servlet generado: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ya está definida en com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Corrija el error en JSP y vuelva a intentarlo.
- Examine los archivos de registro de la aplicación de destino para ver si hay problemas de sintaxis no válida de Java. Si en un navegador aparecen mensajes similar al siguiente: Mensaje:
no se puede compilar la clase para JSP significa que existe este
tipo de problema.
La salida del mensaje de error desde el compilador Javac puede encontrarse en SystemErr.log. Es posible que sea similar a lo siguiente:
JSPG0091E: Se ha producido un error en la línea: 2 en el archivo: /myJsp.jsp JSPG0093E: Error de servlet generado: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ya está definida en com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
La salida del mensaje de error desde el compilador Javac puede encontrarse en los archivos de registro del servidor. Es posible que sea similar a lo siguiente:
JSPG0091E: Se ha producido un error en la línea: 2 en el archivo: /myJsp.jsp JSPG0093E: Error de servlet generado: c:\WASROOT\temp\ ... test.war\_myJsp.java:16: myInt ya está definida en com.ibm.ws.jsp20._myJsp int myInt = 122; String myString = "number is 122"; static int myStaticInt=22; int myInt=121; ^ 1 error
Corrija el error en JSP y vuelva a intentarlo.
Las JSP (JavaServer Pages) no se compilan cuando se utiliza la precompilación
Síntoma | Problema | Solución sugerida |
---|---|---|
Los archivos JSP (JavaServer Pages) no se compilan durante el despliegue a través de la consola administrativa cuando se selecciona la precompilación.
|
Los archivos JSP (JavaServer Pages) no se compilan durante el despliegue a través de la consola administrativa cuando se selecciona la precompilación si hay una dependencia con otro archivo JAR (Java Archive) que no está disponible en ninguna vía de acceso a clases. | Puede utilizar los scripts wsadmin para precompilar los archivos JSP durante el despliegue de aplicaciones empresariales. No obstante, si desea utilizar la consola administrativa, compile todos los archivos JSP antes de empaquetar la aplicación.
|
JSPG0089E: Se ha encontrado una falta de coincidencia en la codificación de la directiva de página Shift_JIS y la codificación de prólogo xml UTF-8
Síntoma | Problema | Solución sugerida |
---|---|---|
Aparece el error siguiente:
|
El atributo pageEncoding del elemento jsp:directive.page no es UTF-8. | Los archivos JSP (JavaServer Pages) deben especificar un prólogo que coincida con la codificación especificada en la directiva de página. Por ejemplo,
Para obtener información adicional, consulte la sección JSP.4.1, codificación de caracteres de página, en la especificación JSP (JavaServer Pages) y la sección 4.3.3 y el apéndice F.1 de la especificación XML (Extensible Markup Language). |
Si ninguno de estos pasos resuelve el problema, compruebe si el problema se ha identificado y está documentado utilizando los enlaces del apartado Diagnóstico y solución de problemas: recursos de aprendizaje. Si no encuentra ningún problema que se parezca la suyo, o si la información proporcionada no resuelve el problema, póngase en contacto con el soporte de IBM para recibir ayuda adicional.
Para obtener información actual disponible del servicio de soporte de IBM sobre problemas conocidos y su resolución, consulte la página de servicio de soporte de IBM. La página del servicio de soporte de IBM contiene documentos que pueden ahorrarle tiempo en la recopilación de la información necesaria para resolver este problema.