En este capítulo se describen los problemas conocidos y las correspondientes soluciones del software Sun GlassFish Enterprise Server 2.1.1. Estos problemas también afectan a Communications Server, basado en Sun GlassFish Enterprise Server 2.1. Si una instrucción de resumen no especifica ninguna plataforma en concreto, el problema se aplica a todas las plataformas. Esta información se ha dividido como sigue:
Este apartado describe problemas conocidos relacionados con la administración, junto con las soluciones pertinentes.
Cuando se crea un clúster, Communications Server asigna aleatoriamente un puerto heartbeat entre 1026 y 45556. Para un clúster predeterminado, creado por una instalación de Communications Server, un número aleatorio entre 0 y 45556. El proceso de creación del clúster no detecta con precisión si el puerto heartbeat ya lo está usando otro servicio.
Si la configuración automatizada de creación de clústeres selecciona un puerto heartbeat que se encuentra en conflicto con otro servicio que ya está utilizando dicho puerto, actualice el puerto heartbeat del clúster a un puerto que no esté usando el sistema.
Para cambiar el puerto heartbeat de un clúster, utilice el siguiente comando asadmin :
asadmin set cluster-name.heartbeat-port= newportnumber
El comando asadmin create-domain puede fallar al intentar crear un dominio en un sistema de archivos montados en NFS, con el servidor NFS ejecutándose en Linux de 64 bits.
No hay una solución conocida.
Cuando se gira un archivo de registro de gran tamaño, se observa un ligero aumento en el tiempo de respuesta.
La degradación del rendimiento se puede reducir modificando los valores del límite de rotación del archivo y del límite temporal de rotación del archivo en la configuración de registro. Los valores de estas propiedades dependerán de la aplicación y el entorno.
La implementación del adaptador genérico RA contra el producto IBM Message Queue falla. Los permisos concedidos en el archivo server.policy son los siguientes.
grant { permission java.util.logging.LoggingPermission "control"; permission java.util.PropertyPermission "*", "read,write"; } |
Cambie los permisos en el archivo server.policy como se explica a continuación:
grant codeBase "file:${com.sun.aas.installRoot}/lib/install/applications/adminapp/-" { permission java.util.logging.LoggingPermission "control"; }; |
En algunas circunstancias, los archivos instalados en DAS para que se sincronicen con una instancia específica se envían a otras instancias.
No hay una solución conocida.
El comando asadmin start-cluster muestra demasiados mensajes incluso cuando los componentes no críticos dan errores en el inicio. Observe la siguiente salida del comando de ejemplo cuando los elementos no críticos (relacionados con las instancias del clúster) fallan:
./asadmin start-cluster --port 9898 cluster1 Please enter the admin user name>admin Please enter the admin password> The clustered instance, instance2, was successfully started. error 0 [#|2008-07-17T14:58:16.496+0200|WARNING|sun-appserver9.1|javax.jms| _ThreadID=10;_ThreadName=main; _RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: Error occurred on connection creation [localhost:37676]. - cause: java.net.ConnectException: Connection refused|#] error 1 [#|2008-07-17T14:58:17.517+0200|WARNING|sun-appserver9.1|javax.jms| _ThreadID=10;_ThreadName=main; _RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;|[C4003]: Error occurred on connection creation [localhost:37676]. - cause: java.net.ConnectException: Connection refused|#] error 2 [#|2008-07-17T14:58:30.596+0200|WARNING|sun-appserver9.1| javax.enterprise.system.container.ejb| _ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean; _RequestID=5954a044-df06-4a3e-902a-0c40b4b6cddb; |EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has not been started or the timer database table has not been created.|#] error 3 [#|2008-07-17T14:58:32.512+0200|WARNING|sun-appserver9.1| javax.enterprise.resource.resourceadapter|_ThreadID=10;_ThreadName=main; __CallFlowPool;_RequestID=90bbbe3a-d654-4480-b295-7e317d945a4a;| RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#] The clustered instance, instance1, was successfully started. error 0 [#|2008-07-17T14:58:21.117+0200|WARNING|sun-appserver9.1| javax.enterprise.system.container.ejb| _ThreadID=13;_ThreadName=pool-1-thread-4;TimerBean; _RequestID=30827d9a-72ac-4854-b216-06494b6a9fb5; |EJB5108:Unable to initialize EJB Timer Service. The likely cause is the database has not been started or the timer database table has not been created.|#] error 1 [#|2008-07-17T14:58:23.106+0200|WARNING|sun-appserver9.1| javax.enterprise.resource.resourceadapter| _ThreadID=10;_ThreadName=main;__CallFlowPool; _RequestID=b41d76fa-0203-49f7-a2ae-83bf242d3e7a; |RAR5005:Error in accessing XA resource with JNDI name [__CallFlowPool] for recovery|#] Command start-cluster executed successfully. |
No hay una solución conocida. Se pueden ignorar estos mensajes (excepcionales).
De forma predeterminada, hay un valor codificado en as-install/lib/package-appclient.xml para la variable AS_ACC_CONFIG de domain1 al que señala asenv.conf. Si domain1 se elimina y se crea un nuevo dominio, la variable AS_ACC_CONFIG no se actualiza con el nombre del dominio nuevo, lo que provoca que falle la secuencia de comandos package-appclient .
Lleve a cabo una de las siguientes acciones:
Deje intacto domain1 y cree los demás dominios en torno a él.
<Check Alignment of PHs>Elimine domain1 y sustituya el valor codificado de domain1 en as-install/lib/package-appclient.xml por el nuevo nombre de dominio.
Deberá llevar a cabo este procedimiento cada vez que cree un dominio nuevo si domain1 no está presente.
J2SE 1.4.x, 5.0 y las versiones posteriores se pueden configurar en Application Server. Una función integral de la plataforma J2SE 5.0 es la capacidad para iniciar un agente JMX. Esta función se activa definiendo explícitamente propiedades de sistema al iniciar el servidor.
Entre los valores de ejemplo se incluyen:
name="com.sun.management.jmxremote" value="true" name="com.sun.management.jmxremote.port" value="9999" name="com.sun.management.jmxremote.authenticate" value="false" name="com.sun.management.jmxremote.ssl" value="false" |
Después de configurar las propiedades JMX e iniciar el servidor, un nuevo servidor jmx-connector se inicia en la máquina virtual de Application Server. Un efecto colateral no deseable es que las funciones de administración se ven afectadas negativamente y la consola de administración de Application Server y la interfaz de línea de comandos pueden generar resultados inesperados. <Check Alignment of PHs>El problema es que se producen algunos conflictos entre el servidor integrado jmx-connector y el nuevo servidor jmx-connector.
Si utiliza jconsole (o cualquier otro cliente compatible con JMX), puede reutilizar el servidor estándar JMX Connector Server que se ejecuta al iniciar Application Server.
Al iniciar el servidor, se muestra una línea parecida a la que aparece más abajo en el registro del servidor. Puede conectarse a la dirección URL de JMXService especificada ahí y realizar las mismas operaciones de configuración y administración después de que se proporcionen correctamente las credenciales, por ejemplo:
[#|2004-11-24T17:49:08.203-0800|INFO|sun-appserver-ee8.1| javax.enterprise.system.tools.admin|_ThreadID=10;|ADM1501: Here is the JMXServiceURL for the JMXConnectorServer: [service:jmx:rmi:///jndi/rmi://hostname:8686/management/ rmi-jmx-connector]. This is where the remote administrative clients should connect using the JSR 160 JMX Connectors.|#] |
El archivo .asadmintruststore no se describe en la documentación. Si el archivo no se encuentra en el directorio home del administrador del servidor, es posible que se produzcan errores graves al actualizar determinadas aplicaciones alojadas en el servidor.
Si el posible, el usuario que instaló el servidor debería ejecutar el comando asadmin start-domain domain1.
<Check Alignment of PHs>Si, por el contrario, no es posible, .asadmintruststore debería moverse o copiarse del directorio home del usuario que ha efectuado la instalación al directorio home del usuario que está ejecutando el servidor.
<Check Alignment of PHs>Tenga en cuenta que si se mueve (no se copia) el archivo del directorio home del usuario de instalación al directorio home del usuario de ejecución, es posible que se produzcan problemas con la actualización de la aplicación, como se describe en los errores 6309079, 6310428 y 6312869, ya que el usuario de instalación/actualización (normalmente root en Java ES) ya no dispondrá del archivo .asadminstruststore en su directorio principal.
El modo de integración predeterminado de MQ para una Communications Server instancia de clúster es LOCAL. Cuando se instala Communications Server en una ubicación (PATH) larga (es decir "not short"), imqbrokerscv.exe se bloquea al iniciarse la instancia del clúster. El problema reside en la asignación de memoria de imqbrokersvc.
El tipo de servicio de JMS para la instancia del clúster debe cambiarse del predeterminado LOCAL a REMOTE. En esta configuración, todas las instancias apuntan al agente DAS. Siga las instrucciones de más abajo para configurar un clúster en el modo REMOTE.
Al utilizar el modo REMOTE, todas las instancias usan un agente (DAS) y por ello, no se crea ningún clúster de agente cuando se inicia el clúster de Communications Server. Consulte “Auto-clustering” en la sección 4.1, apartado iii de la página http://www.glassfishwiki.org/gfwiki/attach/OnePagersOrFunctionalSpecs/as-mq-integration-gfv2.txt para obtener más información. Las funciones antes mencionadas no estarán disponibles
Modifique el puerto y el archivo de la contraseña según su entorno. Tenga en cuenta que en las instrucciones de abajo, el nombre del clúster es racluster, el puerto de administración DAS es 5858, y el puerto JMS de DAS es 7676 .
Cambie el tipo de JMS a REMOTE para modificar la configuración del clúster.
as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \ as-install/bin/password_file racluster.jms-service.type=REMOTE |
Cree un host JMS que corresponda con el host JMS de DAS.
as-install/bin/asadmin.bat create-jms-host --port 5858 --user admin --passwordfile \ as-install/bin/password_file --target racluster --mqhost localhost --mqport 7676 \ --mquser admin --mqpassword admin dashost |
Cambie el host JMS predeterminado al host DAS JMS que creó en el paso anterior.
as-install/bin/asadmin.bat set --port 5858 --user admin --passwordfile \ as-install/bin/password_file racluster.jms-service.default-jms-host=dashost |
Vaya a Configuraciones->cluster-name-config->Java Message Service->JMS Hosts.
Haga clic en Nuevo para crear un host JMS nuevo y asígnele el nombre dashost.
Introduzca los ajustes de configuración correspondientes al servicio de JMS para el DAS; los valores predeterminados son los siguientes:
Nombre del host: host local
Puerto: 7676
Usuario admin.: admin
Password: admin
Modifique estos ajustes del servicio DAS JMS de la forma apropiada.
Regrese hasta la ficha Java Message Service y cambie el tipo de servicio JMS a REMOTE (el predeterminado es LOCAL).
Elija dashost de la lista desplegable default-jms-host .
Guarde los cambios e inicie después el agente de nodo o el clúster.
Al intentar mostrar un gráfico de la página "Control de las estadísticas de registro" con navegadores no admitidos, puede producirse el siguiente error:
Error loading jmaki.widgets.jmaki.charting.line.Widget : id=form1:jmaki_chart11 Script: http://easqelx5.red.iplanet.com:4848/resources/jmaki/charting/ \ line/component.js (line:5437). Message: area.initialize is not a function |
Utilice alguno de los navegadores admitidos. Consulte Navegadores para ver una lista de los navegadores admitidos por Communications Server.
En el sistema operativo AIX si se intenta crear un dominio con una contraseña maestra personalizada, falla y da el siguiente error:
keytool error (likely untranslated): java.lang.NullPointerException Enter keystore password: New keystore password: |
Este apartado describe problemas conocidos relacionados con los clientes de la aplicación, junto con las soluciones pertinentes.
Si cuenta con un archivo JAR de nivel superior en el cliente JAR (en este caso, reporter.jar), cuando implemente el cliente JAR, el archivo MANIFEST para dicho JAR sobrescribirá el archivo MANIFEST para el cliente JAR.
Ninguna por ahora.
El cliente de la aplicación siempre intenta conectar con localhost:3700. El problema es que es necesario leer varias propiedades del sistema antes de que pueda invocarse el código del cliente.
Cambie las siguientes propiedades del sistema (-Den su JAVA_CMD). Pero no lo haga en su código de appclient:
org.omg.CORBA.ORBInitialHost = server-instance-host org.omg.CORBA.ORBInitialPort = server-instance-port |
Cuando un SocketChannel se registra en varios selectores, haciendo socketChannel.keyFor(lastRegisteredSelector) devuelve un valor nulo en lugar de SelectionKey.
Esto está relacionado con el error de JDK 6562829, y se espera esté solucionado en la versión 6.0 U3. Se ha incluido una solución temporal en Communications Server, que desenvuelve el selector antes de que se invoque la API keyFor. Gracias a esta solución, keyFor podrá hacer su trabajo hasta que se solucione el error de JDK.
Este apartado describe problemas conocidos relacionados con los controladores JDBC de Sun, junto con las soluciones pertinentes.
Si una aplicación genera más de 3000 objetos PreparedStatement en una transacción, puede producirse el siguiente error en DB2:
[sunm][DB2 JDBC Driver] No hay más instrucciones disponibles. Vuelva a crear el paquete con un valor de dynamicSections más alto.
Agregue las siguientes propiedades a la definición del conjunto de conexiones para que el controlador vuelva a vincular los paquetes DB2 con un valor mayor de secciones dinámicas:
createDefaultPackage=true replacePackage=true dynamicSections=1000
En relación con el error de PrepardStatement mencionado anteriormente, otro mensaje de error que se puede mostrar es:
[sunm][DB2 JDBC Driver][DB2]Virtual storage or database resource is not available.
Aumente el parámetro de configuración APPLHEAPSZ del servidor DB2 Un valor adecuado es 4096.
Nivel de aislamiento TRANSACTION_SERIALIZABLE. Si una aplicación utiliza un nivel de aislamiento TRANSACTION_SERIALIZABLE y emplea uno de los parámetros sugeridos anteriormente, es posible que se bloquee cuando intente obtener la conexión.
Para definir el nivel deseado de aislamiento para una conexión, el conjunto de conexiones correspondiente debe crearse en el mismo nivel de aislamiento.
La base de datos incluida en Java DB no se reinicia automáticamente después del reinicio de un host o de la zona de Solaris, o del inicio de Communications Server. Esto no es realmente un fallo, es el comportamiento que se espera de las aplicaciones "incluidas" (bundled)o de otro fabricante. El problema es que Java DB debe iniciarse antes que la instancia de Communications Server.
Después de reiniciar la máquina del host o la zona Solaris, asegúrese de iniciar Java DB antes de iniciar Communications Server; por ejemplo:
/opt/SUNWappserver/appserver/bin/asadmin start-database |
Los problemas de sincronización a veces hacen que falle la implementación automática en dominios configurados para dar apoyo a clústeres. El problema no se ha detectado en dominios que no admiten clústeres.
Utilice una de estas soluciones:
Utilice la implementación automática de la siguiente manera:
Implemente automáticamente las aplicaciones una por una de forma secuencial.
Introduzca un tiempo de demora entre implementaciones automáticas de aplicaciones independientes
Implemente aplicaciones manualmente utilizando la interfaz gráfica de usuario de la consola de administración o la línea de comandos.
La compilación de JSP no utiliza el cargador de clases específico de la aplicación (applibs or --libraries). Como resultado, no se compilarán los JSP que hagan referencia a estos JAR.
No hay una solución conocida.
Este apartado describe problemas conocidos relacionados con la documentación, junto con las soluciones pertinentes.
Falta Javadoc o es incorrecto para varios métodos e interfaces AMX:
Los métodos Getter para las estadísticas NumConnAcquired y NumConnReleased no están incluidos en ConnectorConnectionPoolStats y AltJDBCConnectionPoolStats. Dichos métodos se agregarán en una próxima versión con los nombres getNumConnAcquired() y getNumConnReleased().
Si intenta ejecutar los siguientes métodos en EJBCacheStats, se desencadenará una excepción: getPassivationSuccesses(), getExpiredSessionsRemoved(), getPassivationErrors()y getPassivations(). Este error se solucionará en una futura versión.
AMX MBeans necesitan varios segundos después de que se inicie el servidor para registrarse y estar disponibles para su uso. En una versión futura será posible determinar si los AMX MBeans están totalmente cargados.
La constante XTypes.CONNNECTOR_CONNECTION_POOL_MONITOR no está bien escrita ("NNN"). Este error se solucionará en una futura versión.
La siguiente excepción se desencadena en un subproceso "principal" java.lang.NoClassDefFoundError: org/apache/tools/ant/launch/Launcher.
No se recomienda el uso del ANT integrado para cuestiones externas a Communications Server.
Resouce Injection no funciona con HandlerChain por una orden de iniciación de EJB.
No hay una solución conocida.
Cuando utilice la consola de administración para crear un recurso, use la ficha Targets (Destinos) para especificar el servidor como el destino. Si utiliza la línea de comandos o un destino asant, el servidor es el destino predeterminado y no es necesario realizar ninguna acción adicional.
Si se utiliza el API java.util.Arrays.asList() para convertir un Object[] en Collection, JDK devuelve una implementación de java.util.ArrayList que no es clonable. Esto produce la siguiente excepción:
The method invocation of the method [protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException] on the object [[pkg.A id = xxx]], of class [class java.util.Arrays$ArrayList], triggered an exception. Internal Exception: java.lang.reflect.InvocationTargetException Target Invocation Exception: java.lang.CloneNotSupportedException: java.util.Arrays$ArrayList |
El problema está registrado en https://glassfish.dev.java.net/issues/show_bug.cgi?id=556.
Crear otra colección utilizando su constructor; por ejemplo:
myCollection = new ArrayList(java.util.Arrays.asList(a)) |
Si intenta insertar una entidad que utiliza GenerationType.IDENTITY se produce un error si se usa el controlador DataDirect con SyBase. El intento falla porque el controlador DataDirect crea un procedimiento almacenado para cada declaración preparada con parámetros.
En el archivo domain.xml establezca la propiedad PrepareMethod=direct en la fuente de datos correspondiente.
En esta sección, se describen problemas conocidos relacionados con la administración del ciclo de vida, junto con las soluciones pertinentes.
<Check Alignment of PHs>Tras ajustar la propiedad ejb-timer-service de minimum-delivery-interval a 9000, el intento de establecer la propiedad ejb-timer-service redelivery-interval-in-mills en 7000 provoca que el comando set sufra el siguiente error:
[echo] Doing admin task set [exec] [Attribute(id=redelivery-interval-internal-in-millis) : Redelivery-Interval (7,000) should be greater than or equal to Minimum-delivery-interval- in-millis (9,000)] [exec] CLI137 Command set failed. |
minimum-delivery-interval es el intervalo mínimo de duración entre las entregas del mismo temporizador periódico.
redelivery-interval-in-mills es el tiempo que debe esperar el servicio de temporizador para volver a intentar la entrega después de que se haya producido un error en ejbTimeout.
El problema es que la lógica que relaciona la propiedad de intervalo de reentrega con la propiedad de entrega mínima es incorrecta e impide que se utilice la GUI o la CLI para definir valores en los que el intervalo de entrega mínimo sea superior al intervalo de reentrega.
minimum-delivery-interval-in-millis debe ser igual o mayor que la propiedad redelivery-interval-in-millis de ejb-timer-service.. El problema es que se produce una comprobación de validación errónea en Application Server para verificar que el valor de redelivery-interval-in-millis es mayor que el valor de minimum-delivery-interval-in-millis.
Use los valores predeterminados para estas propiedades, tal y como se indica a continuación:
minimum-delivery-interval(default)=7000 redelivery-interval-in-millis(default)=5000 |
Si utiliza valores que no sean los predeterminados, se generará un error.
Si intenta ver los destinos físicos de JMS con default-config, aparecerá un mensaje de error.
Este comportamiento es el esperado. En Communications Server 2.0, default-config es una plantilla de información de configuración y por ello las operaciones JMS (como list y create) no pueden ejecutarse para el default-config. Sin embargo, estas operaciones sí pueden ejecutarse para las configuraciones de su clúster o instancias independientes.
(sólo Windows 2003) Se producen pérdidas de memoria en los sistemas de Windows 2003 al realizar funciones de acceso variados. Este problema se produce porque el conjunto no paginado de Win32 sigue creciendo y acaba por derribar la pila TCP/IP entera. Una vez producido el fallo, la pila TCP/IP se queda en un estado recuperable; la única manera de restaurarlo es reiniciando el sistema Windows 2003.
Existen dos soluciones para este problema:
<Check Alignment of PHs>Utilice el modo de bloqueo Grizzly configurando el atributo domain.xml http-listener, blocking-enabled="true" o añada la siguiente propiedad http-listener:
<property name="blocking" value="true"/> |
Utilice Windows Vista o Windows XP.
Este apartado describe problemas conocidos relacionados con el registro, junto con las soluciones pertinentes.
Si establece la opción java.security.debug para JVM, la instancia del servidor se bloqueará irreversiblemente al iniciarse; por ejemplo, si establece domain.xml en los siguientes valores, se producirá este problema:
<jvm-options>-Djava.security.debug=access,failure</jvm-options> |
Ninguna por ahora. Evite configurar este indicador.
Este apartado describe problemas conocidos relacionados con Java Message Queue, junto con las soluciones pertinentes.
Los errores al volverse a conectar en situaciones que dependen de temporizadores pueden estar causados por diversos problemas.
Puede solucionarlos de esta forma:
Reinicie los agentes involucrados
Reinicie las instancias involucradas de Application Server
Si configura JMS como REMOTO, Enterprise Server no se inicia si el agente MQ no está iniciado.
Defina la siguiente opción de JVM del siguiente modo: com.sun.enterprise.jms.CONNECT_MQ_LAZILY=true . Después de establecer esta opción JVM, puede iniciar Communications Server si el agente de MQ no se inicia. Sin embargo, se recomienda que inicie MQ antes de iniciar el servidor.
Después de crear un dominio con un perfil de clúster en un sistema Linux, es posible que encuentre un error en java.lang.OutOfMemoryError: Java heap space y que la instancia del servidor no se inicie porque el agente no MQ no se ha iniciado. El sistema nunca se recupera tras esta condición. El problema reside en un archivo /etc/hosts mal configurado; en concreto, el nombre del host del servidor apunta a la dirección de bucle invertido 127.0.0.1.
Por diseño, un clúster de agente MQ no puede iniciarse cuando el dispositivo de red está configurado para apuntar a la dirección de bucle invertido. Esto no es un fallo. La solución consiste en asegurarse de que el archivo /etc/hostsdel host Communications Server no señale a 127.0.0.1.
Al iniciar Application Server, se comprueba la versión de Message Queue. Si la versión de Message Queue no es correcta, el servidor se actualiza utilizando el archivo imqjmsra.jar. De este modo, se actualiza JAR y sus clases no estarán disponibles para el servidor hasta que no se vuelva a reiniciar Application Server. Esta situación sólo tiene lugar si Message Queue se actualiza solo o si Application Server se distribuye solo. Una consecuencia de esta situación es que a veces Application Server no se inicia.
Tanto Message Queue como Communications Server deben mantenerse en el mismo nivel de distribución o reiniciar Application Server.
Este apartado describe problemas conocidos relacionados con la supervisión, junto con las soluciones pertinentes.
Al visualizar las estadísticas de vigilancia de algunos elementos del servicio HTTP, algunos valores presentados no corresponden con los valores actuales o siempre son 0. En concreto, las siguientes estadísticas del servicio HTTP no presentan información que se puede aplicar a Application Server y se deben ignorar:
http-service
load1MinuteAverage
load5MinuteAverage
load15MinuteAverage
rateBytesTransmitted
rateBytesReceived
pwc-thread-pool (the element)
Estos elementos de supervisión se eliminarán en versiones futuras y se sustituirán por información más adecuada.
Muchas de las excepciones se generan cuando el navegador JNDI se abre desde la Interfaz de usuario de administración.
Ninguna por ahora.
Este apartado describe problemas conocidos relacionados con los certificados y la seguridad de las aplicaciones web y &ProductName, junto con las soluciones pertinentes.
Un error de JDK (consultar: https://jdk6.dev.java.net/issues/show_bug.cgi?id=23) en el proveedor JDK6 Sun PKCS11 puede provocar un OutOfMemoryError al ejecutar algunos escenarios SSL con un fuerte estrés.
Si se encuentra con este problema, elimine el proveedor sun.security.pkcs11.SunPKCS11 desde el archivo java.security en la instalación de JRE.
El proceso de finalización de SSL no funciona; cuando se configura el equilibrador de carga (hardware) para la finalización de SSL, Communications Server cambia el protocolo https por http durante la redirección.
Agregue un equilibrador de carga de software entre el equilibrador de carga de hardware y Communications Server.
A causa de un error de JVM, se produce un problema de pérdida con algunas versiones de JDK cuando security-enabled se establece en true en una escucha HTTP. Los pasos concretos para reproducir el error son los siguientes:
Establezca security-enabled en true en la escucha HTTP:
<http-listener acceptor-threads="1" address="0.0.0.0" blocking-enabled="false" default-virtual-server="server" enabled="true" family="inet" id=" http-listener-1" port="8080" security-enabled="true" server-name="" xpowered-by="true"> |
Delimitar con comentarios el dominio de detención al final de las pruebas de quicklook.
Ejecutar las pruebas de quicklook.
Comprobar el uso del socket:
netstat -an | grep 8080 |
Los siguientes están en uso:
*.8080 *.* 0 0 49152 0 LISTEN *.8080 *.* 0 0 49152 0 BOUND |
Este problema está registrado en el sitio de GlassFish en https://glassfish.dev.java.net/issues/show_bug.cgi?id=849.
Actualizar a la versión más reciente de JDK.
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 de la aplicación siguen estando en el servidor. El archivo de registro del servidor contiene mensajes en los que se indica que no se han podido eliminar los archivos ni el directorio de la aplicación.
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 una aplicación que utilice el mismo ID de módulo que la aplicación que se implementó originalmente porque el servidor utiliza dicho ID de módulo cuando elige el nombre del directorio para conservar los archivos de la aplicación.
Si intenta reimplementar la aplicación sin anular su implementación primero, se producirán fallos por las mismas razones.
Si intenta volver a implementar la aplicación o implementarla después de haberla eliminado, la utilidad asadmin devuelve un error semejante 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't be deleted. |
No se producirá este problema, si especifica --precompilejsps=false (la configuración predeterminada) al implementar una aplicación. Tenga en cuenta que el primer uso que haga de la aplicación desencadenará la compilación JSP, por lo que el tiempo de respuesta para la primera solicitud será superior al de 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 entero que indica el orden en el que se debe cargar e iniciar el servlet con respecto a los demás servlets de la aplicación web. Si <load-on-startup> está vacío, 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.
<Check Alignment of PHs>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. <Check Alignment of PHs>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 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) |
Defina el conmutador de compilación "fork" de JSP en "false".
Esta acción puede realizarse de dos formas:
De forma global, estableciendo el parámetro "fork init" de JspServlet, ubicado en domain-dir/config/default-web.xml, en "false" (falso):
<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, configurando la propiedad de configuración JSP fork de sun-web.xml en false:
<sun-web-app> <jsp-config> <property name="fork" value="false" /> </jsp-config> </sun-web-app> |
Cualquiera de estos ajustes evitará que ant genere un nuevo proceso de compilación javac .
En esta sección, se describen problemas conocidos relacionados con el contenedor web, junto con las soluciones pertinentes.
La tarea de ant wscompile falla con JDK 6 Update 4. Para cada clase de JAX-RPC API, aparece el siguiente mensaje de error:
package package-name does not exist |
Antes de ejecutar la tarea ant wscompile asegúrese de que se especifica javaee.jar en la ruta de clase, y no j2ee.jar.