En esta sección, se describen problemas conocidos relacionados con el contenedor web, junto con las soluciones pertinentes.
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.
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
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.
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\>.
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.
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)
Establezca el conmutador de compilación fork de JSP en false.
Esta acción puede realizarse de dos formas:
Globalmente, al establecer el parámetro fork init de JspServlet en ${S1AS_HOME}/domains/domain1/config/default-web.xml como false:
<servlet\> <servlet-name\>jsp</servlet-name\> <servlet-class\>org.apache. jasper.servlet.JspServlet</servlet-class\> .... <init-param\> <param-name\> fork</param-name\> <param-value\>false</param-value\> </init-param\> .... </servlet\>
En cada aplicación web, estableciendo la propiedad de configuración fork de JSP en sun-web.xml como false:
<sun-web-app\> <jsp-config\> <property name="fork" value="false" /\> </jsp-config\> </sun-web-app\>
Las dos configuraciones impedirán que ant genere un nuevo proceso para la compilación de javac.
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.
Configure Application Server para utilizar la siguiente opción de JVM:
-Dcom.sun.enterprise.server.ss.ASQuickStartup=false
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.
Hay varias soluciones posibles:
Deshabilite la compatibilidad de Fast Infoset en los clientes para que sólo se envíen mensajes SOAP codificados con XML.
Reinicie el contenedor que implementa los servicios para que puedan enviarse los mensajes SOAP codificados de Fast Infoset compatibles.