Este capítulo describe los problemas conocidos y las correspondientes soluciones temporales del software Sun GlassFish Enterprise Server 2.1. Si no se especifica una plataforma concreta para un problema, significa que éste 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.
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).
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"; }; |
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 el servidor. 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. Un efecto colateral no deseable es que las funciones de administración se ven afectadas negativamente y la consola de administración 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 el servidor.
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.|#] |
Para más información, consulte la Sun GlassFish Enterprise Server 2.1 Administration Guide.
Al configurar el equilibrador de carga con una aplicación que tenga un módulo EJB que exporte una URL de servicio web, la raíz del contexto para el nuevo servicio web no se encuentra en el archivo loadbalancer.xml resultante.
Edite el archivo loadbalancer.xml para agregar los módulos web que falten de la siguiente forma:
<web-module context-root="context-root-name" disable-timeout-in-minutes="30" enabled="true"/> |
Sustituya el valor de context-root-name con el nombre root del contexto del servicio web que se expuso como EJB.
El archivo .asadmintruststore no se describe en la documentación de Enterprise Server. 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 Enterprise Server instancia de clúster es LOCAL. Cuando se instala Enterprise 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 Enterprise 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 Enterprise Server 2.1.
El puerto administrativo predeterminado ha cambiado en las principales tres versiones anteriores de Enterprise Server. <Check Alignment of PHs>En concreto, los puertos administrativos predeterminados en 7.x, 8. x y 9.x son los siguientes:
AS 7.x: 4848
AS 8.x: 4849
AS 9.x: 4848
No se trata de un fallo, pero es necesario tenerlo en cuenta. El puerto administrativo predeterminado sólo es una recomendación. Se prevé que las futuras versiones de Enterprise Server conservarán el puerto 4848.
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: |
En el siguiente procedimiento, sólo se ofrecen las opciones necesarias en cada paso. Si requiere opciones adicionales para un comando, especifíquelas en el comando. Para obtener información sobre los comandos de Enterprise Server, consulte el Sun GlassFish Enterprise Server 2.1 Reference Manual .
Cree una secuencia de comandos que contenga las siguientes líneas de código:
#!/bin/sh changeKeystorePass() { keytool -storepasswd -keystore ${KEYSTORE} -storepass ${OLD} -new ${NEW} } changeTruststorePass() { keytool -storepasswd -keystore ${TRUSTSTORE} -storepass ${OLD} -new ${NEW} } changeKeyPass() { keytool -keypasswd -alias s1as -keystore ${KEYSTORE} -storepass ${NEW} -keypass ${OLD} -new ${NEW} } changeDomainPasswordEntry() { keytool -storepasswd -storetype JCEKS -keystore ${DOMAINPASSWORDS} -storepass ${OLD} -new ${NEW} } deleteMasterPasswordFile() { if [ -f ${DOMAIN_PATH}/master-password ] ; then echo Deleting ${DOMAIN_PATH}/master-password rm -f ${DOMAIN_PATH}/master-password fi } DOMAIN_PATH=$1 OLD=$2 NEW=$3 if [ $# != 3 ] ; then echo Usage: $0 domain-path old-master-pass new-master-pass exit 1 fi echo Processing ... if [ ! -f ${DOMAIN_PATH}/config/domain.xml ] ; then echo "Domain with folder ${DOMAIN_PATH} does not exist, create it first" exit 2 else KEYSTORE=${DOMAIN_PATH}/config/keystore.jks TRUSTSTORE=${DOMAIN_PATH}/config/cacerts.jks DOMAINPASSWORDS=${DOMAIN_PATH}/config/domain-passwords changeKeystorePass changeTruststorePass changeKeyPass changeDomainPasswordEntry deleteMasterPasswordFile fi
Cree un dominio, especificando la contraseña maestra predeterminada.
aadmin create-domain {--adminport aminportno|--portbase portbase} domain-name Please enter the admin user name>admin-user Please enter the admin password>admin-user-password Please enter the admin password again>admin-user-password Please enter the master password [Enter to accept the default]:> Please enter the master password again [Enter to accept the default]:> |
La contraseña maestra predeterminada es changeit.
Cambie la contraseña maestra del dominio que acaba de crear.
Para cambiar la contraseña maestra, ejecute la secuencia de comandos creada en el Paso 1.
script-name domain-path old-password new-password |
Inicie el dominio que ha creado en el Paso 2.
asadmin start-domain domain-name |
Como el dominio tiene una contraseña maestra personalizada, se le pedirá la contraseña maestra.
Como respuesta al mensaje, escriba la nueva contraseña maestra.
Para los dominios configurados para admitir clústeres cree e inicie un agente de nodo.
Cree un agente de nodo para el dominio que ha creado en el Paso 2.
asadmin create-node-agent --port portno --user admin-user |
Inicie el agente de nodo que ha creado en el Paso a.
asadmin start-node-agent |
Como el dominio tiene una contraseña maestra personalizada, se le pedirá la contraseña maestra.
Como respuesta al mensaje, escriba la nueva contraseña maestra.
Las siguientes páginas man de Enterprise Server:
En el sistema operativo AIX algunas operaciones relacionadas con el sistema operativo pueden fallar y dar el error siguiente:
0403-027 The parameter list is too long |
Ejemplos de operaciones relacionadas con el sistema operativo son la implementación de aplicaciones o ejecutar el contenedor del cliente de aplicación.
Este problema está causado normalmente por rutas de archivo largas en la variable de entorno CLASSPATH.
Utilice una de estas soluciones:
Incremente la longitud máxima de la línea de comandos. Para obtener más información, consulte (AIX) Cómo incrementar la longitud máxima de la línea de comandos.
Utilice el comando xargs para construir la lista de argumentos e iniciar el comando. El comando xargs permite a los comandos exceder la longitud máxima de la línea de comandos.
El atributo ncargs determina la longitud máxima de la línea de comandos, incluidas las variables de entorno. En el sistema operativo AIX, el valor predeterminado del atributo ncargs es de cuatro bloques de 4 kilobytes. Para garantizar que los comandos de Enterprise Server no superen la longitud máxima de la línea de comandos, aumente este valor a 16 bloques de 4 kilobytes.
Tras cambiar el valor de ncargs, no se necesita reiniciar ni actualizar los daemons.
Determine el valor del atributo ncargs.
lsattr -EH -l sys0 | grep ncargs |
Si el valor del atributo ncargs es menor a 16 bloques de 4 kilobytes, auméntelo a un valor de 16.
chdev -l sys0 -a ncargs=16 |
En este apartado se describen los problemas conocidos relacionados con el complemento del equilibrador de carga y Apache Web Server, y las soluciones pertinentes.
Al implementar cualquier WAR (o EAR) con un servicio web basado en servlet, se actualiza el equilibrador de carga de HTTP con información sobre este servicio web. Al implementar un servicio web basado en EJB, la configuración del equilibrador de carga de HTTP no se actualiza para reflejar el objeto nuevo.
Agregue manualmente estas raíces de contexto al archivo de configuración de Load Balancer). Sin embargo, la reconfiguración dinámica de la configuración del equilibrador de carga (mediante la función de aplicación automática) daría lugar a la pérdida de las ediciones manuales anteriores.
Cierre la aplicación automática desde DAS y en su lugar utilice la función de exportación manual para editar y aplicar la configuración del equilibrador de carga en el servidor web.
Para ejecutar la seguridad de Apache, debe usar un certificado. Para obtener instrucciones acerca del modo de obtener un certificado de una autoridad certificadora, consulte la información sobre certificados en la sección de preguntas frecuentes de modssl .
En Solaris, si Application Server se instaló como root, deberá usar Apache Web Server también como root. Las instalaciones de Java Enterprise System se realizan como root. En Apache 2.0, después de iniciarse como root, Apache cambia y se ejecuta como el usuario que se especifique. Especifique ese usuario en el archivo /conf/httpd.conf. Para realizar un inicio como root en varios sistemas, debe editar el archivo httpd.conf para especificar el grupo correcto. Sustituya la línea:
Group #-1
por
Group nobody
Encontrará más información sobre el uso de user/group en el archivo httpd.conf.
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 |
Al ejecutarse en Linux de 64–bits, se produce la siguiente excepción al iniciar el dominio. El problema es que falta sunpkcs11.jar en jdk1.5.0_11/jre/lib/ext/.
Se sabe que se trata de un error de JDK con Linux de 64–bits, pero que se solucionará en JDK 1.5.0_13.
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 Enterprise Server 2.1, 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
Consulte la Sun GlassFish Enterprise Server 2.1 Administration Guide para obtener información sobre cómo configurar los conjuntos de conexiones.
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. Consulte la Sun GlassFish Enterprise Server 2.1 Administration Guide para obtener instrucciones.
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 Enterprise 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 Enterprise Server.
Después de reiniciar la máquina del host o la zona Solaris, asegúrese de iniciar Java DB antes de iniciar Enterprise Server; por ejemplo:
/opt/SUNWappserver/appserver/bin/asadmin start-database |
Consulte Administration Tools de Sun GlassFish Enterprise Server 2.1 Quick Start Guide en la Sun GlassFish Enterprise Server 2.1 Quick Start Guide para conseguir más información sobre las opciones del comando asadmin.
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 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 Enterprise Server.
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.
Resouce Injection no funciona con HandlerChain por una orden de iniciación de EJB.
No hay una solución conocida.
En este apartado se describen los problemas conocidos relacionados con la base de datos de alta disponibilidad (HADB) y las soluciones asociadas.
La comprobación del estado del complemento del equilibrador de carga genera un gran número de conexiones y desconexiones en el fondo (carga). Para comprobaciones de estado, un subproceso runDaemonMonitor se conecta y se desconecta para cada receptor del servidor de aplicaciones. Esto puede derivar en una saturación de la conexión en Enterprise Server.
Se ha desarrollado un atributo nuevo, monitor-interval-in-seconds, para el archivo loadbalancer.xml. Este atributo se puede usar para introducir una pausa entre los eventos de conexión y desconexión en el caso de que cientos de receptores estén configurados para el complemento del equilibrador de carga. El valor predeterminado de pausa es 0.
La configuración de HADB con redes dobles en dos subredes funciona correctamente en Solaris SPARC. Sin embargo, debido a problemas en el sistema operativo o a los controladores de red en algunas plataformas de hardware, se ha observado que las plataformas Linux y Solaris x86 no siempre gestionan correctamente las redes dobles. Esto provoca los siguientes problemas con HADB:
En Linux, algunos de los procesos de HADB se bloquean al enviar mensajes. Esto hace que el nodo de HADB se reinicie y se produzcan particiones en la red.
En Solaris x86, pueden surgir algunos problemas después de un fallo de red que impidan cambiar a otras interfaces de red. Esto no sucede siempre, por lo que sigue siendo mejor tener dos redes que una sola. Estos problemas se han resuelto parcialmente en Solaris 10.
No se admite el truncamiento.
HADB no admite el uso de redes dobles en Windows 2003 (ID 5103186).
La creación de una base de datos nueva puede fallar con el siguiente error, que indica que hay muy pocos segmentos de memoria compartida disponibles:
HADB-E-21054: System resource is unavailable: HADB-S-05512: Attaching shared memory segment with key "xxxxx" failed, OS status=24 OS error message: Too many open files.
Compruebe que la memoria compartida esté configurada y que la configuración esté funcionando. En concreto, en Solaris 8, consulte el /etc/system, y compruebe que el valor de la variable shmsys: shminfo_shmseg sea, como mínimo, 6 veces el número de nodos por host.
Al aumentar el tamaño de la memoria búfer o de los dispositivos usando hadbm set,, el sistema de administración comprueba la disponibilidad de los recursos cuando se crean bases de datos o se agregan nodos, pero no comprueba si hay recursos suficientes cuando se cambia el tamaño de la memoria búfer principal o del dispositivo.
Compruebe si hay espacio de disco o de memoria suficiente en todos los hosts antes de aumentar los atributos de configuración devicesize o buffersize.
No se puede registrar el mismo paquete de software con el mismo nombre en ubicaciones distintas y en hosts diferentes, por ejemplo:
hadbm registerpackage test --packagepath=/var/install1 --hosts europa11 Package successfully registered. hadbm registerpackage test --packagepath=/var/install2 --hosts europa12 hadbm:Error 22171: A software package has already been registered with the package name test. |
HADB no admite rutas heterogéneas en los nodos de un clúster de base de datos. Asegúrese de que el directorio de instalación de HADB (--packagepath) sea el mismo para todos los hosts.
Si el agente de administración se está ejecutando en un host con varias interfaces de red, es posible que el comando createdomain presente errores si no están todas las interfaces de red en la misma subred:
hadbm:Error 22020: The management agents could not establish a domain, please check that the hosts can communicate with UDP multicast. |
Los agentes de administración, a menos que estén configurados de otra forma, usarán la "primera" interfaz para difusiones UDP (se entiende como "primera" interfaz el resultado de java.net.NetworkInterface.getNetworkInterfaces() ).
La mejor solución es indicarle al agente de administración qué subred debe utilizar (defina ma.server.mainternal.interfaces en el archivo de configuración, por ejemplo, ma.server.mainternal.interfaces=10.11.100.0). Otra opción es configurar el enrutador entre las subredes para que dirija los paquetes de difusión (el agente de administración utiliza la dirección de difusión 228.8.8.8).
Antes de volver a intentarlo con una configuración nueva de los agentes de administración, puede que deba limpiar el repositorio del agente de administración. Detenga todos los agentes del dominio y elimine todos los archivos y directorios del directorio del depósito (identificados por repository.dr.path en el archivo de configuración del agente de administración). Esta acción debe realizarse en todos los hosts antes de reiniciar los agentes con un nuevo archivo de configuración.
En Solaris 10 Opteron, el inicio, la detención o la reconfiguración de HADB usando el comando hadbm pueden fallar o generar bloqueos con alguno de los siguientes errores:
hadbm:Error 22009: The command issued had no progress in the last 300 seconds. HADB-E-21070: The operation did not complete within the time limit, but has not been cancelled and may complete at a later time. |
Esto puede suceder si hay incoherencias al leer o escribir en un archivo (nomandevice) que esté utilizando el proceso clu_noman_srv. Este problema se puede detectar buscando los siguientes mensajes en los archivos del historial de HADB:
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 does not respond. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 104.537454 sec. n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 did not start. |
La siguiente solución no se ha probado, puesto que no se ha reproducido el problema manualmente. Sin embargo, la ejecución de este comando para el nodo afectado debería resolver el problema.
hadbm restartnode --level=clear nodeno dbname |
Tenga en cuenta que se reiniciarán todos los dispositivos del nodo. También es posible que haya que detener el nodo antes de reiniciarlo.
Cuando se inicia en un host que ejecuta Solaris 8 con varias tarjetas NIC instaladas, si hay una mezcla de tarjetas con IPv6 e IPv4 habilitados, el agente de administración puede terminar con la excepción "IPV6_MULTICAST_IF failed.".
Defina la variable de entorno JAVA_OPTIONS en -Djava.net.preferIPv4Stack=true como, por ejemplo:
export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true" |
De lo contrario, use Solaris 9 o una versión posterior que no esté afectada por este problema.
Hay un error en la versión de 64 bits de Red Hat Enterprise Linux 3.0 que hace que el proceso clu_trans_srv finalice en un modo imposible de interrumpir al activar las E/S asíncronas. Esto significa que kill -9 no funciona y que se debe reiniciar el sistema operativo.
Use una versión de 32 bits de Red Hat Enterprise Linux 3.0.
Las letras mayúsculas en las contraseñas se convierten en minúsculas cuando la contraseña se almacena en hadb.
No use contraseñas que contengan letras mayúsculas.
Al retroceder en las versiones, el agente de administración puede fallar con distintos códigos de error.
Es posible retroceder en la versión de la base de datos de HADB, sin embargo, el agente de administración no podrá retroceder en su versión si se han hecho cambios en los objetos del repositorio. Después de retroceder en la versión, deberá usar el agente de administración de la última versión de HADB.
Con respecto a la instalación o eliminación del paquete de HADB (Solaris: SUNWhadbc, Linux: sun-hadb-c) versión <m.n.u-p>, el symlink /opt/SUNWhadb/<m> no se modifica una vez creado. En consecuencia, es posible que exista un symlink huérfano.
Elimine el symlink antes de la instalación o después de la desinstalación, a menos que esté en uso.
En Solaris 10, al detener el agente de administración usando la secuencia de comandos ma-initd en una zona global, se detiene también el agente de administración en la zona local.
No instale el agente de administración en la zona global y la local.
En ocasiones, un problema de contención de recursos en el servidor puede hacer que un cliente de administración se desconecte. Al volverse a conectar, se puede mostrar un mensaje de error algo confuso "hadbm: Error 22184: A password is required to connect to the management agent".
En ocasiones, un problema de contención de recursos en el servidor puede hacer que un cliente de administración se desconecte. Al volverse a conectar, se puede mostrar un mensaje de error algo confuso "hadbm: Error 22184: A password is required to connect to the management agent".
Compruebe si hay algún problema con los recursos en el servidor, realice las acciones necesarias (por ejemplo, agregue más recursos) y vuelva a intentar la operación.
La instalación de Java Enterprise System (como root) no permite que los usuarios que no sean root administren HADB.
Inicie sesión siempre como root para poder administrar HADB.
Las interfaces de uso especial con direcciones IP similares a 0.0.0.0 no deberían registrarse como interfaces válidas para los nodos de HADB en el agente de administración. El registro de dichas interfaces podría provocar problemas si los nodos de HADB se configuran en estas interfaces mediante la ejecución del comando hadbm create por parte del usuario con nombres de host en lugar de con direcciones IP. Los nodos no podrán establecer comunicación, lo que provocara el bloqueo del comando create.
Al utilizar hadbm create en hosts con varias interfaces, especifique siempre explícitamente las direcciones IP con una notación DDN.
En la plataforma Windows, con determinadas configuraciones y cargas, es posible que se produzca un gran número de errores de reensamblaje en el sistema operativo. Se ha detectado este problema con configuraciones de más de veinte nodos al ejecutar varios análisis de tabla (select *) en paralelo. Entre los síntomas detectados, se incluyen los siguientes: las transacciones se anulan frecuentemente, el proceso de reparación o recuperación tarda mucho tiempo en completarse, y se agota frecuentemente el tiempo de espera en diversas partes del sistema.
Para solucionar el problema, puede establecer la variable del registro de Windows HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters en un valor superior a 100 (valor predeterminado). Se recomienda que aumente este valor a 0x1000 ( 4096). Para obtener más información, consulte Artículo 811003 de las páginas de asistencia de Microsoft.
<Check Alignment of PHs>Las cookies con una ruta igual a "/" interfieren con las cookies de una aplicación web altamente disponible que esté implementada en una raíz de contexto distinta a "/" y que utilice la replicación en memoria como su tipo de persistencia, lo que impide a la aplicación web altamente disponible conservar cualquier estado de sesión HTTP. Esto suele ocurrir cuando se utiliza el mismo navegador para acceder a la Interfaz Gráfica de Usuario de Admin (que está implementada en "/") y a la aplicación web altamente disponible.
Acceda a la aplicación web implementada en "/" desde un navegador distinto.
SASL32.DLL y ZLIB.DLL son archivos necesarios para que el equilibrador de carga funcione con Windows IIS 6. Estos archivos ya no están disponibles en as-install/lib
Copie manualmente los dos archivos DLL en as-install/lib. También es posible descargar estos archivos de:
http://download.java.net/javaee5/external/OS/aslb/jars/ |
Donde OS representa la plataforma deseada, que puede ser uno de los siguientes valores:
SunOS
SunOS_X86
Linux
WINNT
Se producen dos problemas al instalar o desinstalar Enterprise Server con paquetes de alta disponibilidad en una zona global:
Los paquetes de HA se instalan en todas las zonas, algo que puede no ser conveniente.
Al desinstalarlos, los paquetes HA, MQ y JDK se eliminan de todas las zonas, algo que puede no ser conveniente.
Este problema no se produce si la instalación o desinstalación se realiza desde una zona local de raíz.
Realizar la instalación y la desinstalación desde una zona local de raíz y no desde una zona global.
Las aplicaciones web implementadas en "/" son incapaces de mantener cualquier sesión HTTP cuando utilizan la replicación en memoria como su tipo de persistencia.
Implementar en una raíz de contexto que no sea "/" aquellas aplicaciones web altamente disponibles que utilicen replicación en memoria como tipo de persistencia. Si desea que esa aplicación web esté disponible en "/", puede designarla como el módulo web predeterminado del servidor virtual en el que se haya implementado esa aplicación web.
Durante la instalación del equilibrador de la carga de Enterprise Server para Apache en Solaris, el instalador actualiza LD_LIBRARY_PATH en la secuencia de comandos de apachectl . Sin embargo, el instalador no escribe correctamente la ruta /usr/lib/mps. En Solaris, la instancia de seguridad Apache no se inicia si esta ruta no está en LD_LIBRARY_PATH.
Este problema sólo se produce en plataformas Solaris. Para solucionar este problema de forma temporal, agregue /opt/SUNWappserver/appserver/lib/lbplugin/lib a su LD_LIBRARY_PATH.
El botón Activar equilibrio de carga siempre está activado en la página general del Clúster o Instancia, con independencia de lo que se guarde en domain.xml.
<Check Alignment of PHs>Para instancias con clúster, seleccione la ficha Instancias y después haga clic en la acción Poner en modo inactivo del menú desplegable de la tabla.
Para instancias independientes, asegúrese de que la instancia esté ejecutándose y después pulse en el botón Poner en modo inactivo de la página General de la instancia.
(sólo en Solaris) Después de instalar Enterprise Server 2.1 en SPARC Solaris 10 con HADB, es posible que aparezca el siguiente error tras iniciar Enterprise Server e intentar después instalar JES 5 UR 1 con Registry Server:
Dependency Error: Installation can not proceed because the version of HA Session Store 4.4.3 detected on this host is incomplete , and a compatible version is required by Servervice Registry Deployment Support. |
No es posible instalar Registry Server desde JES 1 UR2.1 con Enterprise Server 2.1 IFR en equipos con Solaris. Es necesario instalar los paquetes de Registry Server manualmente mediante el comando pkgadd del siguiente directorio de distribución JES5 UR:
path/OS/Products/registry-svr/Packages |
(sólo en Internet Explorer 6 y 7) Al intentar exportar el archivo de configuración del equilibrador de carga (loadbalancer.xml) desde Internet Explorer 6 o 7, el navegador muestra un mensaje de error que informa de que no es posible localizar el archivo DTD sun-loadbalancer_1_2.dtd.
Para guardar el archivo, utilice la siguiente solución alternativa:
Haga clic en Exportar en la página Equilibrador de la carga de Internet Explorer.
Se muestra el mensaje "No es posible mostrar la página XML".
Haga clic en el marco del error y después elija Archivo -> Guardar como de Internet Explorer.
Guarde el archivo loadbalancer.xml en el directorio que prefiera.
Este apartado describe problemas conocidos relacionados con la instalación, junto con las soluciones pertinentes.
Este problema se ha observado en sistemas con Linux y una variable de entorno, MALLOC_CHECK_, establecida en 2.
Establezca la variable de entorno, MALLOC_CHECK_,en 0. Ejecute el comando export como se indica a continuación:
export MALLOC_CHECK_ |
Se ha observado que este problema se ha producido en varios sistemas Linux. Es más frecuente en Java Desktop System 2, pero también se ha observado en distribuciones Linux Red Hat.
Después de hacer clic en el botón "Finalizar" en la última pantalla, el instalador no consigue iniciar una ventana del explorador que contiene la página con información acerca del producto o la página de registro. El instalador se bloquea completamente y no permite volver a la línea de comandos.
Salga de instalador pulsando Ctrl+C en la ventana de terminal en la que se inició el instalador. Después de hacer esto, es posible que se muestre una ventana del explorador que contiene información acerca del producto o la pantalla de registro, de lo contrario, inicie el navegador y escriba la siguiente dirección URL para ver la información acerca del producto:
file://as-install/docs-ee/about.html |
Si seleccionó la opción pertinente para registrar el producto, siga el enlace a la página de registro que se mostrará en la página de información sobre el producto.
En Windows, justo después de la instalación, el agente de Message Queue presenta errores durante el inicio y se muestra un mensaje en el que se indica que no existe el directorio drive:\as\domains\domain1\imq.
Tenga en cuenta que si el agente se ejecuta después de iniciar domain1, Application Server creará el directorio y no habrá ningún problema.
Cree var_home_dir_location antes de crear el agente:
$imqbrokerd -varhome var_home_dir_location |
Por ejemplo:
$imqbrokerd -varhome D:\as\domains\domain1\imq |
<Check Alignment of PHs>Si el archivo productregistry de Enterprise Server contiene configuraciones de componentes compartidos, un procedimiento de desinstalación de Enterprise Server no actualizará el archivo productregistry correctamente, por lo que usted no podrá utilizar el modo silencioso en una instalación posterior a menos que cambie el nombre del archivo productregistry o lo elimine. Se dejan intactas las entradas de los componentes compartidos en el archivo productregistry por cuestiones de diseño, pero provoca confusiones con las posteriores instalaciones silenciosas.
Cuando los archivos de registro de la desinstalación le indiquen que la desinstalación se ha realizado correctamente, elimine el archivo productregistry antes de ejecutar la instalación posterior. Para comprobar que se ha realizado correctamente la desinstalación previa, busque el archivo appserv_uninstall.class en as-install. Este archivo no estará si la desinstalación se realizó correctamente.
Si la desinstalación no se realizó correctamente, no borre productregistry.
El archivo productregistry se encuentra en /var/sadm/install en Solaris y en /var/tmp en Linux.
Al instalar Enterprise Server en una zona local escasa, la instalación falla si no se instala primero Message Queue (MQ). El instalador intenta instalar MQ y después falla la instalación entera.
Es necesario instalar MQ manualmente en la zona global antes de instalar Enterprise Server en una zona local escasa. Hay dos soluciones alternativas para este problema:
Instalar MQ 2.1 manualmente en la zona global desde el mismo soporte en que se encuentre la instalación IFR de Enterprise Server 2.1 para obtener los paquetes de MQ más recientes.
Utilice el instalador que se corresponda con su plataforma:
mq4_1-installer-SunOS.zip mq4_1-installer-SunOS_X86.zip mq4_1-installer-Linux_X86.zip mq4_1-installer-WINNT.zip |
Descomprima los bits y ejecute el instalador.
El instalador se encuentra en el directorio mq4_1-installer.
Instale cualquier componente de la instalación IFR en la zona global. Con esta acción se comprueba la versión de MQ en GZ y, si es necesario, se actualizaría a la incluida en Enterprise Server 2.1 IFR. Sólo con seleccionar e instalar el componente de las aplicaciones de muestra se actualiza MQ a la versión IFR.
Ejecute la instalación de Enterprise Server en la zona global, pero seleccione sólo los componentes de muestra.
La instalación del componente de muestra también instala MQ y los componentes compartidos de Enterprise Server en todas las zonas.
Vuelva a ejecutar la instalación de Enterprise Server, pero esta vez en la zona local escasa.
La instalación debería realizarse sin problemas.
Al ejecutar el instalador IFR de Enterprise Server2.1; con la opción —console (en modo línea de comandos), aparecerá el siguiente mensaje:
Do you want to upgrade from previous Application Server version? |
Desgraciadamente, el instalador IFR no admite estas actualizaciones, por lo que este mensaje es erróneo. Si responde afirmativamente al mensaje, la instalación continuará normalmente, pero no se indicará que se ha realizado una instalación completa en lugar de una actualización.
Utilice la herramienta de actualización cuando quiera actualizar su instalación de Enterprise Server.
Puede que aparezcan las siguientes excepciones:
#|2008-11-19T01:44:37.422+0530|SEVERE|sun-appserver9.1|org.apache.catalina.session.ManagerBase|_ThreadID=17;_ThreadName=pool-1-thread-3;_Req uestID=cc0ddf54-a42e-400a-9788-e30d79a25d88;|PWC2768: IOException while loading persisted sessions: java.io.InvalidClassException: org.apache .catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 8647852380089530442, local class serialVersi onUID = -8515037662877107054 java.io.InvalidClassException: org.apache.catalina.session.StandardSession; local class incompatible: stream classdesc serialVersionUID = 864 7852380089530442, local class serialVersionUID = -8515037662877107054..... .....
Después de finalizar la actualización y de iniciar el dominio actualizado, estas excepciones se pueden ignorar.
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 el servidor al verificar que el valor de redelivery-interval-in-millis es superior al 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 Enterprise Server 2.1, 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.
Si configura JMS en REMOTO, Enterprise Server no se inicia si MQ broker no está iniciado.
No hay una solución conocida. Configure JMS para trabajar en modo INCORPORADO.
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
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 Enterprise Server no señale a 127.0.0.1.
Al iniciar el servidor, éste comprueba la versión de la cola de mensajes. Si la versión de Message Queue no es correcta, entonces el servidor se actualiza utilizando imqjmsra.jar. Esto actualiza JAR y sus clases no estarán disponibles para el servidor hasta el siguiente reinicio. 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 el servidor no se inicia.
Tanto Message Queue como Enterprise Server necesitan mantenerse en el mismo nivel de distribución o reiniciar el servidor.
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 aplicable a Enterprise Server, y se deberían 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.
En esta sección, se describen los problemas conocidos y sus soluciones asociadas en relación con los paquetes de código de software de Enterprise Server 2.1.
El comando monitor no se puede ejecutar en el sistema operativo AIX debido a que no se ha incluido en el paquete de Enterprise Server 2.1; el archivo de biblioteca libcliutil.so.
Acceda al directorio en el que ha descargado el archivo appserv-native-9.1.1-b16a.jar file.
prompt% cd destination-dir |
Extraiga el contenido del archivo appserv-native-9.1.1-b16a.jar.
prompt% jar xf appserv-native-9.1.1-b16a.jar |
Copie el archivo libcliutil.so en el directorio as-install /lib.
prompt% cp libcliutil.so as-install/lib |
En esta sección, se describen problemas conocidos y sus soluciones asociadas en relación con el código de ejemplo incluido en el producto Enterprise Server 2.1.
En Windows, después de actualizar a Enterprise Server 2.1;, las muestras y las muestras del portal JES 5 compiten por el puerto Derby 1527. En concreto, Enterprise Server 2.1; inicia automáticamente JavaDB en el puerto 0.0.0.0:1527 con APP:APP, sin embargo el JES5 Portal JavaDB pretende enlazar a hostnameIP:1527 con portal:portal.
Este error describe un problema que ya se ha dado en JES 5, error 6472173. La solución alternativa para el error 6472173 está documentada en la guía de instalación de Sun Java Enterprise System 5 para Microsoft Windows en http://docs.sun.com.
Iniciar la base de datos Derby con el siguiente comando:
JES-installation-dir\appserver\bin\asadmin start-database --dbhome JES-installation-dir\portal\data\derby |
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.
En la plataforma AIX, el cifrado dinámico para la determinación de una clave de cifrado para una respuesta falla El fallo ocurre durante la validación del certificado de parte del servidor.
En respuesta al fallo, los siguientes mensajes de error se escriben en el archivo de registro del servidor server.log:
Unable to validate certificate |
Error occurred while resolving key information com.sun.xml.wss.impl.WssSoapFaultException: Certificate validation failed |
Instale Metro 1.1 en Enterprise Server2.1
Un método en un bean empresarial cuya identidad de seguridad run-as o de propagación se define por medio de la anotación @RunAs intenta invocar un método en otro bean empresarial. Si no se define ningún run-as principal en el archivo descriptor de implementación sun-ejb-jar.xml, el intento puede fallar con un error de tipo javax.ejb.AccessLocalException .
javax.ejb.AccessLocalException: Client not authorized for this invocation. |
En el archivo descriptor de implementación sun-ejb-jar.xml defina el nombre principal en el nombre principal-name el nombre principal para el que se ha especificado la función run-as.
El proceso de finalización de SSL no funciona; cuando se configura el equilibrador de carga (hardware) para la finalización de SSL, Enterprise 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 Enterprise 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 la utilidad de actualización, junto con las soluciones pertinentes.
Este problema se ha observado en varios sistemas Linux y es más frecuente en Java Desktop System 2, pero también se ha detectado en distribuciones Red Hat.
Después de hacer clic en el botón que permite iniciar la herramienta de actualización en la pantalla final del instalador, éste no logra iniciarla para completar el proceso y se bloquea de forma indefinida, por lo que no consigue volver a la línea de comandos.
Este problema no se produce si se utiliza el modo de instalación mediante línea de comandos para llevar a cabo la actualización "in situ".
Si realiza dicha actualización en modo de GUI y se encuentra con este problema, salga del instalador pulsando Ctrl+C en la ventana de terminal en la que se inició el instalador.
Inicie la herramienta de actualización desde la ventana de terminal usando los siguientes comandos:
as-install/bin/asupgrade --source as-install/domains --target as-install --adminuser adminuser --adminpassword adminpassword --masterpassword changeit |
adminuser y adminpassword deben coincidir con los valores usados para la instalación que esté actualizando.
Cuando la herramienta de actualización complete el proceso, podrá iniciar también el explorador y especificar la siguiente URL para visualizar la página que muestra información acerca del producto:
file://as-install/docs-ee/about.html |
Si seleccionó la opción pertinente para registrar el producto, siga el enlace a la página de registro que se mostrará en la página de información sobre el producto.
Elimine las siguientes entradas del destino domain.xml (después de la actualización) y reinicie el servidor:
<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot} /config/keystore.jks</jvm-options>- <jvm-options>Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot} /config/cacerts.jks</jvm-options>
Al actualizar Enterprise Server 8.0PE a 2.1, se genera un error avisando que el servidor no tiene ningún conector de sistema llamado null, y muestra información del usuario no válida que aparece en sbs-manual. Incluso después de cambiar los valores codificados, sigue apareciendo el mismo mensaje de error.
Sólo puede encontrar este error al actualizar desde un 8.0 PE a Enterprise Server. La solución alternativa es actualizar a 8.1, 8.2 o 9.0 y, a continuación, a Enterprise Server.
Al realizar una actualización "in situ" cuando hay varios dominios en la fuente, el instalador invoca la herramienta de actualización aunque se aborte el proceso. Esto sucede cuando se invoca en el modo GUI.
Instale la actualización in situ en el modo CLI y salga cuando el instalador le pida que seleccione la herramienta de actualización al final del proceso de instalación. Si hace lo indicado, no se eliminará ninguno de los dominios presentes en el directorio de dominios. La herramienta de actualización debería invocarse manualmente desde el directorio bin.
Si instala la actualización in situ en el modo GUI, haga una copia de seguridad de los dominios que se encuentren en la raíz de dominios para evitar perder alguno en el proceso. Al final del proceso de instalación, salga cuando el instalador le pida que invoque la herramienta de actualización. Copie en el directorio de dominios las copias de seguridad de los dominios que se hayan perdido. Inicie la herramienta de actualización manualmente para hacer una actualización.
Al actualizar de AS 8.2, la contraseña maestra de la instalación 8.2 no se hereda en la instalación de destino. Por ello se produce un error de autenticación en el siguiente inicio de sesión del administrador.
La contraseña administrativa predeterminada de Enterprise Server 2.1 sigue siendo changeit. Para evitar problemas al iniciar la sesión en Enterprise Server tras actualizar desde 8.2, siga alguna de las instrucciones que se indican a continuación:
Cambie la contraseña de administración de 8.2 a changeit antes de realizar la actualización.
No debe aceptar la contraseña de administración predeterminada que se le propone durante el proceso de actualización, sino introducir la contraseña que desea utilizar.
Inicie la sesión en Enterprise Server 2.1 con la contraseña predeterminada y cámbiela después inmediatamente.
Al ejecutar la interfaz de usuario de asupgrade en un idioma que no sea el inglés, la ayuda en línea de la interfaz de usuario no está traducida al idioma seleccionado.
Ninguna por el momento. Se planea traducir la ayuda en línea a todos los idiomas meta distintos al inglés.
Tras una actualización codo a codo de una configuración que contiene varios dominios, sólo los agentes de nodo del último dominio procesado están presentes. Esto es debido a que la Herramienta de actualización elimina y vuelve a crear el directorio nodeagents en el objetivo cada vez que la Herramienta de actualización procesa un dominio.
Tras procesar el dominio, cree un archivo comprimido del directorio nodeagents.
Cuando haya procesado todos los dominios, descomprima los archivos creados.
Ahora todos los agentes de nodo deberían estar presentes.
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 .
Sun GlassFish Enterprise Server 2.1; es compatible con la funcionalidad proporcionada por la función del plugin auth-passthrough disponible con Sun GlassFish Enterprise Server Enterprise Edition 2.1. Sin embargo, en Enterprise Server 2.1;, la función plugin de auth-passthrough se configura de forma distinta.
La función plugin de auth-passthrough en Enterprise Server Enterprise Edition 7.1 ha sido útil en escenarios de dos niveles, cuando:
La instancia de Application Server está protegida por un segundo servidor de seguridad detrás del servidor de seguridad corporativo.
No se permiten conexiones de clientes directamente a la instancia de Application Server:
En arquitecturas de red de este tipo, un cliente se conecta a un servidor web de principal (front-end) que se haya configurado con la función del complemento service-passthrough y reenvía solicitudes HTTP a la instancia de Application Server que actúa de proxy para que las procese. La instancia de Application Server sólo puede recibir solicitudes desde el proxy del servidor web, pero nunca directamente de los hosts clientes. En consecuencia, ninguna aplicación implementada en la instancia de Application Server que actúa de proxy que solicite información del cliente (como pueda ser la dirección IP del cliente) recibirá la IP de host del proxy, puesto que éste es el host que origina la solicitud remitida.
En Application Server Enterprise Edition 7.1, la función complemento de auth-passthrough podría configurarse en la instancia de Application Server con proxy para hacer que la información del cliente remoto esté disponible directamente con cualquier aplicación implementada en ella, como si la instancia de Application Server con proxy hubiera recibido la solicitud directamente, en lugar de a través del servidor web que ejecuta el complemento service-passthrough.
En Enterprise Server 2.1;, la función auth-passthrough puede activarse estableciendo la propiedad authPassthroughEnabled del elemento <http-service> en domain.xml en TRUE (verdadero), de la siguiente manera:
<property name="authPassthroughEnabled" value="true"/> |
Las mismas consideraciones de seguridad de la función del complemento auth-passthrough en Application Server Enterprise Edition 7.1 también se aplican a la propiedad de authPassthroughEnabled en Enterprise Server 2.1. Ya que authPassthroughEnabled hace posible ignorar información que se puede utilizar con objetivos de autenticación (como la dirección IP desde la que se solicitó o el certificado de cliente de SSL), es esencial que sólo se permita la conexión a los clientes o servidores de confianza a una instancia Enterprise Server 2.1 con authPassthroughEnabled establecido en TRUE. Como medida de precaución, se recomienda que sólo los servidores que estén detrás de un servidor de seguridad corporativo se configuren con authPassthroughEnabled establecido en TRUE. Un servidor que esté accesible a través de Internet nunca debe configurarse con authPassthroughEnabled definido en TRUE.
Tenga en cuenta que en una situación en la que el servidor web proxy se haya configurado con el complemento service-passthrough y éste reenvíe solicitudes a una instancia de Enterprise Server con authPassthroughEnabled definido como TRUE (verdadero), la autenticación SSL de cliente puede habilitarse en el servidor web proxy y deshabilitarse en la instancia para la que actúa de proxy. En este caso, Enterprise Server se seguirá considerando la solicitud como si estuviera autenticada a través de SSL y proporcionará el certificado SSL de cliente a cualquier aplicación implementada que lo solicite.
Este problema sólo se produce al utilizar el servidor web de Sun GlassFish con Enterprise Server y el equilibrador de la carga en un sistema Linux. En este caso, después de instalar Enterprise Server y el equilibrador de la carga, el inicio de Web Server puede fallar debido al conflicto entre libicui18n.so.2 y libicuuc.so.2. Estas bibliotecas se encuentran en /opt/sun/private/lib y en /opt/sun/appserver/lib.
Las bibliotecas que hay que utilizar son las de /opt/sun/appserver/lib porque la construcción de lbplugin es contraria a esas bibliotecas. Una vez eliminadas las dos bibliotecas de /opt/sun/private/lib, Web Server debería iniciarse sin errores.
<Check Alignment of PHs>Si no desea eliminar las bibliotecas de /opt/sun/private/lib , también puede poner /opt/sun/appserver/lib antes de /opt/sun/private/lib en LD_LIBRARY_PATH de la secuencia de comandos de Web Server startserv; es decir, sustituir:
# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux LD_LIBRARY_PATH="${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}: /opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib"; export LD_LIBRARY_PATH |
por:
# Add instance-specific information to LD_LIBRARY_PATH for Solaris and Linux LD_LIBRARY_PATH="/opt/sun/appserver/lib:/opt/sun/appserver/lbplugin/lib: ${SERVER_LIB_PATH}:${SERVER_JVM_LIBPATH}:${LD_LIBRARY_PATH}"; export LD_LIBRARY_PATH |
En esta sección, se describen problemas conocidos relacionados con el contenedor web, junto con las soluciones pertinentes.
Puede que existan problemas al ejecutar las pruebas de JAX—WS con JDK 1.6 incluido con Java EE SDK b33d. Las pruebas se interrumpen inmediatamente con el siguiente mensaje:
[wsimport] Exception in thread "main" java.lang.NoClassDefFoundError: \ com/sun/tools/ws/WsImport |
Este error se produce incluso cuando webservices-tools.jar contiene com/sun/tools/ws/WsImport.class, com/sun/tools/ws/ant/WsImport.class y com/sun/tools/ws/ant/WsImport2.class. Además, el mismo espacio de trabajo de las pruebas funciona sin problemas con 1.5.0-10 JDK.
Copie el webservices-api.jar a $JAVA_HOME/jre/lib/endorsed antes de ejecutar las pruebas de JAX-WS.
JAXR utiliza SAAJ para enviar mensajes soap al registro. En el caso "no-IFR", las clases SAAJ impl se encuentran en lib/webservices-rt.jar. En el caso IFR, las clases SAAJ todavía están en lib/webservices-rt.jar. Además, saaj-impl.jar se encuentra en el directorio /usr/share/lib. Este archivo jar ha sido elegido por Enterprise Server y tiene prioridad sobre las clases de webservices-rt.jar. Este archivo jar no tiene los permisos de seguridad necesarios para enviar mensajes soap al registro de los servicios web. <Check Alignment of PHs>El empaquetado debería modificarse para conceder permisos a los jars del directorio /usr/share/lib o para no depender de los jars de /usr/share/lib.
Agregue lo siguiente al archivo server.policy:
grant codeBase "file:/usr/share/lib/saaj-impl.jar" { permission java.security.AllPermission; }; |
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.
--
--
asadmin no funciona después de ejecutar la instalación en el entorno regional español (error 7937)
Instalar GlassFish en un entorno inglés. Más adelante se puede pasar a español. El error se corregirá en la siguiente versión del parche, en torno a junio del 2009