Notas de la versión de Sun Java System Application Server Platform Edition 8.2

Contenedor web

En esta sección, se describen problemas conocidos relacionados con el contenedor web, junto con las soluciones pertinentes.

Si se implementa una aplicación mediante --precompilejsp=true, se pueden bloquear los archivos JAR de la aplicación, lo que provocaría el fallo de la reimplementación o de la anulación de la implementación más adelante (sólo en Windows). (Id. 5004315)

Si solicita una precompilación de JSP cuando implemente una aplicación en Windows, los siguientes intentos para anular la implementación o para volver a implementarla (o alguna aplicación con el mismo ID de módulo) no funcionarán tal y como se esperaba. El problema es que la precompilación de JSP abre archivos JAR en la aplicación, pero luego no los cierra y Windows impide que se anule la implementación porque no se pueden eliminar los archivos e impide que se puedan volver a implementar, puesto que no se pueden sobrescribir.

Tenga en cuenta que la anulación de la implementación es correcta hasta un punto en el que la aplicación se elimina lógicamente de Application Server. Tenga en cuenta también que la utilidad asadmin no muestra ningún mensaje de error, a pesar de que los archivos jar bloqueados y el directorio application\qs siguen estando en el servidor. El archivo de registro de server\qs contendrá mensajes en los que se describe el fallo para eliminar los archivos y el directorio application\qs.

Los intentos de volver a implementar la aplicación después de que ésta se haya anulado fallan porque el servidor trata de eliminar los archivos existentes y el directorio, pero estos intentos fallan. Esto puede suceder si intenta implementar cualquier aplicación que use el mismo Id. de módulo que se utilizó para implementar originalmente la aplicación porque el servidor usa el Id. del módulo para elegir el nombre del directorio en el que se guardarán los archivos de la aplicación.

Los intentos de volver a implementar la aplicación sin anularla primero fallarán por los mismos motivos.

Diagnóstico

Si intenta volver a implementar la aplicación o implementarla después de haberla eliminado, la utilidad asadmin devuelve un error parecido al siguiente.

An exception occurred while running the command.  The exception message 
is: CLI171 Command deploy failed : Deploying application in domain failed;
Cannot deploy. Module directory is locked and can\qt be deleted

Soluciones

Si especifica --precompilejsps=false (la configuración predeterminada) al implementar una aplicación, no se producirá este problema. Tenga en cuenta que cuando use la aplicación por primera vez se activará la compilación JSP, por lo que el tiempo de respuesta a la primera solicitud será más largo que para las solicitudes posteriores.

Debe saber también que si realiza una compilación previa, deberá detener y reiniciar el servidor antes de anular la implementación de la aplicación o de volver a implementarla. Al cerrar, se liberan los archivos JAR bloqueados por lo que la anulación de la implementación o el proceso para volver a implementar se realizarán correctamente.

No se puede implementar un archivo WAR con web.xml basado en Servlet 2.4 que contenga un elemento <load-on-startup\>. (Id. 6172006)

El elemento opcional load-on-startup servlet en web.xml indica que el servlet asociado se debe cargar e iniciar cuando se inicie la aplicación web de la que forma parte.

El contenido opcional de este elemento es un número entero que indica el orden en el que el servlet se debe cargar e iniciar con respecto a los otros servlets de application\qs. Si <load-on-startup\> está vacío, esto indica que el orden no es relevante, siempre y cuando el servlet se cargue e inicie durante el inicio de la aplicación web que lo contiene.

El esquema de Servlet 2.4 de web.xml ya no admite un elemento <load-on-startup\> vacío. Esto implica que debe especificarse un entero al utilizar un archivo web.xml basado en Servlet 2.4. Si se especifica un elemento <load-on-startup\> vacío, como en <load-on-startup/\>, el archivo web.xml no podrá realizar la validación en el esquema de Servlet 2.4 para web.xml, por lo que fallará la implementación de la aplicación web.

Problema de compatibilidad con versiones anteriores En el caso de un archivo web.xml basado en Servlet 2.3, sí se puede dejar vacío <load-on-startup\>.

Solución

Especifique <load-on-startup\>0</load-on-startup\> al utilizar un archivo web.xml basado en Servlet 2.4 para indicar que el orden de carga del servlet es irrelevante.

No se puede compilar la página JSP en servidores con restricciones de recursos. (Id. 6184122)

Se puede acceder a la página JSP, pero se producen fallos al compilar y el registro del servidor contiene el mensaje de error "Unable to execute command", es decir, que no se puede ejecutar el comando con este seguimiento de pila:

at org.apache.tools.ant.taskdefs.Execute$Java13CommandLauncher.exec
(Execute.java:655) at org.apache.tools.ant.taskdefs.Execute.launch
(Execute.java:416) at org.apache.tools.ant.taskdefs.Execute.execute
(Execute.java:427) at org.apache.tools.ant.taskdefs.compilers.
DefaultCompilerAdapter.executeExternalCompile(DefaultCompilerAdapter.
java:448) at org.apache.tools.ant.taskdefs.compilers.JavacExternal.
execute(JavacExternal.java:81) at org.apache.tools.ant.taskdefs.Javac.
compile(Javac.java:842) at org.apache.tools.ant.taskdefs.Javac.execute
(Javac.java:682) at org.apache.jasper.compiler.Compiler.generateClass
(Compiler.java:396)

Solución

Establezca el conmutador de compilación fork de JSP en false.

Esta acción puede realizarse de dos formas:

Reducción del rendimiento en los equipos con varias CPU. (Id. 6194026)

La configuración predeterminada de Application Server PE no funciona de forma óptima en los equipos con varias CPU. Se realiza una concesión para acelerar el inicio, pero esto puede afectar negativamente en el rendimiento de las aplicaciones web.

Solución

Configure Application Server para utilizar la siguiente opción de JVM:

-Dcom.sun.enterprise.server.ss.ASQuickStartup=false

Los documentos de Fast Infoset recibidos con errores de formato pueden deshabilitar la compatibilidad de Fast Infoset con los servicios implementados de JAX-RPC. (Id. 6368670)

Si se envía un mensaje SOAP codificado de Fast Infoset no compatible a un servicio de JAX-RPC, el servicio presentará errores de forma correcta. Sin embargo, los siguientes mensajes SOAP codificados de Fast Infoset compatibles que se envíen al mismo servicio o a un servicio implementado con el mismo tiempo de ejecución JAX-RPC presentarán errores indebidamente.

Solución

Hay varias soluciones posibles: