En esta sección se describen los problemas conocidos de Sun GlassFish Enterprise Server v3 y las soluciones, si están disponibles.
[JDK_Issue] Excepción de puntero nulo al reiniciar el servidor (Problema 8299)
[JDK_Issue] Excepción de E/S: argumento no válido durante la prueba de longevidad (Problema 7529)
[JDK_Issue] Excepción de puntero nulo EPoll en el inicio (Problema 9472)
[JDK_ISSUE] Richaccess: java.io.IOException: argumento no válido desde doSelect (Problema 8573)
El archivo de registro de instalación de Windows no es legible (Problema 4881)
Excepción de puntero nulo lanzada desde com.sun.xml.wss.NonceManager.getInstance (Problema 11138)
[Update Center] Error en acceso a directorio sin usuario (problema de Update Center 1583)
No se pueden enviar mensajes JMS entre los sistemas (Problema 11254)
Problema de configuración del servicio de temporizador EJB para MySQL (problema 11428)
El subcomando deploy falla en un servidor seguro (problema 11439)
Certificado caducado en truststore de Enterprise Server (problema 6852796)
Al llamar al método setSoLinger o al método setReuseAddess, el rendimiento se ve reducido y se desencadena la siguiente excepción:
[#|2009-01-26T00:33:56.325-0800|WARNING|sun-appserver9.1| javax.enterprise.system.container.web|_ThreadID=17; _ThreadName=SelectorReaderThread-8084; _RequestID=11ae0030-c392-4217-8408-cfa7efe0a879;|setSoLinger exception java.net.SocketException: Invalid argument |
Este problema está causado por un problema con el software JDK. Este problema se ha resuelto en JDK versión 7.
Para obtener más información, consulte Informe del problema.
Ninguna.
En algunas ocasiones al reiniciar Enterprise Server se puede generar una excepción de puntero nulo.
SEVERE: doSelect exception java.lang.NullPointerException |
Este problema está causado por un problema con el software JDK. Este problema se ha resuelto en JDK versión 7.
Para obtener más información, consulte Informe del problema.
Ninguna.
Durante una prueba de longevidad HTTP, se ha desencadenado la siguiente excepción 42 horas dentro de la ejecución:
[#|2009-04-05T17:41:26.537-0700|SEVERE|glassfish|javax.enterprise.system.core| _ThreadID=15;_ThreadName=Thread-1;|doSelect exception java.io.IOException: Invalid argument |
La instancia y la aplicación siguen estando disponibles durante la ejecución.
Este problema está causado por un problema con el software JDK. Este problema se ha resuelto en JDK versión 7.
Para obtener más información, consulte Informe del problema.
Ninguna.
Durante el inicio, Enterprise Server lanza una excepción de puntero nulo:
java.lang.NullPointerException at sun.nio.ch.Util.atBugLevel(Util.java:326) at sun.nio.ch.SelectorImpl.<init>(SelectorImpl.java:40) at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:47) |
Está relacionado con Grizzly y es un problema de JDK 6. Este problema se ha resuelto en JDK 7.
Para obtener más información, consulte Informe del problema.
Ninguna. Grizzly intenta solucionar este problema pero aún puede producirse.
Se ha observado la siguiente excepción:
[#|2009-06-20T06:05:57.942-0700|SEVERE|glassfish| com.sun.grizzly.config.GrizzlyServiceListener| _ThreadID=21;_ThreadName=Thread-2;|doSelect IOException java.io.IOException: Invalid argument |
Este es un problema de JDK programado para solucionarse en JDK 1.6.0_18.
Para obtener más información, consulte Informe del problema.
Aumente el número máximo de descriptores de archivo a 10.000 o más (el valor predeterminado en Solaris es de 64.000). Cuando esté disponible JDK 1.6.0_18, instálelo.
Si el directorio /applications de un dominio restringe el acceso, o si se utiliza la implementación de directorios desde un directorio restringido, el servidor no podrá leer los archivos del directorio expandido. Se produce un error NullProcessException durante la implementación.
Para obtener más información, consulte Informe del problema.
Cambie la configuración de acceso al archivo para los directorios para los que otorga permiso al servidor para que lea el contenido del directorio.
El archivo time-stamp-install.log no puede leerse, dado que todas las líneas escritas en el archivo están concatenadas en una única cadena larga.
Para obtener más información, consulte Informe del problema.
Utilice un editor distinto y abra manualmente el registro de instalación creado en el directorio %TEMP%.
Las estadísticas de supervisión sobre los servidores virtuales recién agregados están disponibles sólo después de reiniciarse el servidor.
Para obtener más información, consulte los informes Problema 6238 y Problema 6422.
Tras agregar un servidor virtual, reinicie el servidor para ver los datos de supervisión para el servidor virtual.
Opción -1 para reubicar archivos de registro omitidos al utilizarse con las opciones -a y -s y archivos de registro creados en la ubicación predeterminada.
Para obtener más información, consulte Informe del problema.
Ninguna.
Algunas funciones no funcionarán bien en Windows Vista con Control de cuentas de usuario (UAC) habilitado. Un ejemplo es la Consola de administración, que no se podrá iniciar.
Para obtener más información, consulte Informe del problema.
Deshabilite UAC y reinicie.
La comprobación de un servicio web JAX-RPC con un proveedor de seguridad de mensajes GlassFish habilitado desencadena la siguiente excepción en los registros del servidor:
[#|2009-11-23T11:16:58.375+0005|SEVERE|glassfishv3.0| javax.enterprise.resource.webservices.rpc.server.http|_ThreadID=25;_ ThreadName=http-thread-pool-8080-(2);|caught throwable java.lang.RuntimeException: com.sun.enterprise.security.jauth.AuthException |
El valor predeterminado de la propiedad nonce no funciona.
Para obtener más información, consulte Informe del problema.
Para utilizar la seguridad de mensajes con servicios web JAX-RPC, deshabilite la propiedad nonce en la configuración. Consulte el informe del problema para ver todos los pasos para solucionarlo.
El grupo de menús de inicio de Enterprise Server no se muestra después de que la instalación se haya completado por primera vez. Si cierra la sesión y, a continuación, vuelve a iniciarla, aparece el grupo de menús, pero está vacío.
Para obtener más información, consulte Informe del problema.
Ninguna.
El comando asadmin get -m "server.*" devuelve todos los datos de supervisión que pertenecen a ese servidor. Cuando hay muchas aplicaciones implementadas, la cantidad de datos es bastante grande y podría tardar mucho tiempo en devolver los datos. Puede que se agote el tiempo de espera del cliente con el siguiente error en el cliente:
./asadmin get --monitor=true "server.*" I/O Error: Read timed out Command get failed. |
Para obtener más información, consulte Informe del problema.
Minimice la cantidad de datos que se devuelven al cliente.
Ejecute el comando asadmin list -m "server.*", que devuelve los elementos del nivel superior.
Seleccione el elemento del nivel superior para el que se necesiten los detalles y utilícelo como filtro. Por ejemplo:
> ./asadmin list -m "server.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-cache server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. create-int-int-[Lorg\.spec\.jappserver\.supplier\.helper\.ComponentOrder server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods. findByPrimaryKey-java\.lang\.Integer server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.generateXml server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.getEJBLocalHome ... >./asadmin get -m "server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.*" ... server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-name = MethodStatistic server.applications.SPECjAppServer.supplier\.jar.POEnt.bean-methods.remove. methodstatistic-starttime = 1259604209775 ... |
La herramienta de actualización autónoma se inicio con un error del comando updatetool con un fallo de segmentación en Solaris al instalar componentes adicionales.
Para obtener más información, consulte Informe del problema.
Asegúrese de que el sistema se ajusta a los requisitos de revisiones de la Herramienta de actualización autónoma tal como se define en las Notas de versión de Update Center.
La funcionalidad de la Herramienta de actualización de la Consola de administración utiliza una API de Update Center diferente basada en Java y no se ve afectada por este problema.
Si se implementa una aplicación Ruby en contextroot '/' y después se accede a la Consola de administración, al acceder a la aplicación Ruby se produce un error 404.
Para obtener más información, consulte Informe del problema.
Ninguna.
Al utilizar Java Web Start para iniciar una aplicación cliente, no se reconocerá ningún bean administrado en el cliente de aplicaciones.
Para obtener más información, consulte Informe del problema.
Inicie el cliente de aplicaciones mediante la secuencia de comandos appclient. Los beans administrados en el cliente de aplicaciones se admiten normalmente.
Al llamar a la secuencia de comandos appclient en sistemas Mac OS X con Java de Apple instalado, aparece dos veces el siguiente seguimiento de pila (aquí sólo se muestran las primeras líneas):
Intentionally suppressing recursive invocation exception! java.lang.IllegalStateException: recursive invocation at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1394) at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1377) at sun.security.jca.ProviderConfig$1.run(ProviderConfig.java:64) ... |
Para obtener más información, consulte Informe del problema.
No se necesita ninguna.
A pesar de los mensajes de advertencia, el cliente se iniciará correctamente y se ejecutará con normalidad. Estos errores vienen derivados de un problema en la implementación de Java de Apple.
Se produce un problema cuando todas las condiciones siguientes son verdaderas:
La aplicación es un archivo EAR que contiene un cliente de aplicaciones.
El archivo EAR está implementado en un directorio.
El EAR contiene un módulo de cliente de aplicación myAppClient.jar , que, como es una implementación de directorio, se ha expandido previamente en myAppClient_jar. (En este ejemplo, myApp es el nombre del EAR. Este nombre puede ser cualquier cosa.)
Al intentar iniciar el cliente de aplicaciones se produce un fallo con el siguiente error debido a que un archivo generado en el servidor se encuentra en el directorio de servidor equivocado y sobrescribe otro archivo generado:
java.lang.ClassNotFoundException:(main-class-for-the-client) |
Para obtener más información, consulte Informe del problema.
Cambie el nombre del cliente de aplicaciones para que no sea myAppClient.jar . En concreto:
Edite myApp/META-INF/application.xml para que la declaración del cliente sea <java>myClient.jar</java>. Tenga en cuenta que puede utilizar cualquier nombre que no sea myAppClient.jar.
Cambie el nombre del directorio myApp/myAppClient_jar por myApp/myClient_jar. Tenga en cuenta que el nombre del subdirectorio del cliente debe ser el mismo que el URI del cliente de aplicaciones en el archivo application.xml, con el .jar sustituido por _jar.
Implemente la aplicación:
asadmin deploy --retrieve localdir myApp |
Ejecute el cliente de la aplicación:
appclient -client localdir/myAppClient.jar |
Realiza cambios para que los valores del registro de servidor en la ficha General de la página Configuración de registro de la Consola de administración no surtan efecto inmediatamente.
Para obtener más información, consulte Informe del problema.
Reinicie el servidor. Todos los cambios en los valores de esta página requieren reiniciar el servidor para que surtan efecto.
Los archivos de registro de la instalación no se pueden abrir haciendo clic en los vínculos de la página Resumen que se muestra al final del proceso de instalación en el programa de instalación gráfico.
Para obtener más información, consulte Informe del problema.
Acceda a los archivos manualmente. Los nombres de los archivos de registro y de resumen de la instalación son timestamp-install.log y timestamp-install-summary.html. En sistemas Linux y Mac, estos archivos se generan en el directorio $TMP.
Si vuelve a instalar Enterprise Server (con la Herramienta de actualización) en el mismo directorio de instalación con los mismos valores predeterminados y ejecuta la Herramienta de actualización con el comando updatetool , recibirá un mensaje donde se indicará que la Herramienta de actualización no está instalada y se le preguntará si desea instalarla. Esto sólo se produce en sistemas Windows.
Para obtener más información, consulte Informe del problema.
Después de la desinstalación, elimine manualmente el directorio .org* que queda antes de volver a realizar la instalación.
Este problema se produce de forma intermitente en sistemas Windows y Mac OS. pkg(5) no funciona en ciertos sistemas a determinadas horas.
Para obtener más información, consulte Informe de problema de Update Center.
Ninguna.
La ayuda en línea y la lista de páginas de comando man CLI servlet 2.4 en el campo X-Powered-By. La versión correcta es servlet 3.0.
Para obtener más información, consulte Informe del problema.
Ninguna.
Cuando se utiliza un elemento incrustado con glassfish-embedded-all-3.0-b73.jar, la implementación falla con el siguiente error:
SEVERE: WEB9051: Error trying to scan the classes at /private/var/folders/CV/CVhj8DvqEwGK5bdJKK9TaE TI/-Tmp- /gfembed6991712842235699248tmp/applications/xwiki-enterprise-web-2.0/ WEB-INF/lib/activation-1.1.jar for annotations in which a ServletContainerInitializer has expressed interest java.util.zip.ZipException: error in opening zip file |
El problema se produce porque el elemento incrustado utiliza una carpeta con el signo más (+) y los signos más de una ruta se convierten en caracteres de espacio " " cuando la ruta se descodifica.
Para obtener más información, consulte Informe del problema.
Se ha agregado una propiedad de sistema que permite colocar directorios temporales. La propiedad es glassfish.embedded.tmpdir y se puede definir de forma que el directorio de dominio temporal no se encuentre en el directorio del usuario.
create-service no puede crear un servicio sin AS_ADMIN_USER en passwordfile en Solaris.
Para obtener más información, consulte Informe del problema.
Ninguna.
Enterprise Server utiliza una estructura de árbol para realizar el seguimiento de objetos supervisables. Dentro de ese árbol, la siguiente vista no está disponible para obtener estadísticas de conjunto de conexiones:
server.connector-service.resource-adapter-name .connection-pool-name .* o server.jms-service.connection-factories. connection-factory-name.* (para conjuntos relacionados con jms-ra).
Para obtener más información, consulte Informe del problema.
Utilice la vista server.resources.* para obtener los datos estadísticos.
Para obtener más información sobre la supervisión, consulte el Capítulo 8, Administering the Monitoring Service de Sun GlassFish Enterprise Server v3 Administration Guide.
Con el tramado habilitado, las actualizaciones de una colección de elementos de incrustables puede desencadenar posiblemente una excepción de puntero nulo.
Para obtener más información, consulte Informe de problemas de EclipseLink.
Hay dos soluciones posibles:
Agregue la anotación @ChangeTracking(DEFFERED) al elemento incrustable y establezca la propiedad eclipselink.weaving.internal en falso, o
Ajuste las siguientes propiedades en falso en XML de persistencia: eclipselink.weaving.changetracking y eclipselink.weaving.internal.
Después de iniciar el dominio y de acceder a localhost:4848, aparecerán los siguientes mensajes en el registro del servidor:
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-1;|Created virtual server server|#] |
[#|2009-11-27T16:21:57.091+1100|INFO|glassfishv3.0| javax.enterprise.system.container.web.com.sun.enterprise.web| _ThreadID=20;_ThreadName=Thread-20;|Created virtual server server|#] |
Estos mensajes dan la impresión de que el servidor virtual, servidor, se ha iniciado dos veces. No es el caso. Los servidores virtuales sólo se inician una vez, pero los mensajes se registran varias veces.
Para obtener más información, consulte Informe del problema.
Ninguna.
La depuración de JPA es difícil debido a los mensajes limitados del servidor.
Para obtener más información, consulte Informe del problema.
Agregue la propiedad org.eclipse.persistence.session.level=INFO al archivo logging.properties. A continuación, puede utilizar Consola de administración para controlar los registros de EclipseLink.
La interoperabilidad de EJB para EJB remotos se interrumpe cuando el EJB de destino se encuentra en el mismo host (otro dominio de Enterprise Server u otra instancia de Enterprise Server v3).
Para obtener más información, consulte Informe del problema.
Defina la siguiente propiedad en jvm-options:
-Dorg.glassfish.orb.iiop.orbserverid=:
El programa de instalación gráfica de Enterprise Server se bloquea al 41% durante la instalación en Windows Vista y Windows 7. Esto no ocurre cada vez que intenta la instalación.
Para obtener más información, consulte Informe del problema.
Este problema está relacionado con la función de ajuste automático de Windows Vista y Windows 7, que está habilitada de forma predeterminada.
Si experimenta bloqueos al instalar Enterprise Server por primera vez o al agregar paquetes o aplicar actualizaciones, restrinja o deshabilite la función de ajuste automático.
De forma predeterminada, el nombre de host predeterminado para el servicio JMS de Enterprise Server es localhost. Sin embargo, para acceder al servicio JMS desde otro sistema debe cambiar el nombre del host. Puede cambiarlo por cualquier nombre de host real o por 0.0.0.0.
Para obtener más información, consulte Informe del problema.
Para realizar el cambio, efectúe una de las siguientes acciones:
Utilice la Consola de administración: expanda Configuración, Java Message Service y nodos host JMP, seleccione default_JMS_host y edite el campo Host o
Utilice un subcomando asadmin como, por ejemplo:
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="0.0.0.0" o
asadmin set server-config.jms-service.jms-host.default_JMS_host.host="hostname"
Al instalar Enterprise Server con el programa de instalación gráfico, la instalación se realiza correctamente, pero sólo se agrega la entrada de GlassFish v3 de nivel superior al menú del sistema de Windows, y está vacía. Este problema se produce tanto con los instaladores traducidos como los que están en inglés.
Para obtener más información, consulte Informe del problema.
Ninguna.
mysql no aparecen en la lista de bases de datos compatibles en --dbvendorname en la página de comando man deploy. Esto es incorrecto. MySQL es una base de datos compatible y debe aparecer en la lista.
Para obtener más información, consulte el Informe del problema.
Ninguna.
El ACC espera que el cargador de clases del contexto del subproceso activo sea un ACCClassLoader. Esto es excesivamente restrictivo. Aunque esta condición se cumple para la secuencia de comandos appclient y Java Web Start se inicia, es posible que no se cumplan para el caso incrustado. Otras funciones del ACC requieren que el cargador de clases sea un URLClassLoader (o una instancia de una subclase de URLClassLoader), pero el cargador no necesitan ser un ACCClassLoader.
Para obtener más información, consulte el Informe del problema.
Hay dos soluciones posibles:
Establezca -Djava.system.class.loader=org.glassfish.appclient.client.acc.ACCClassLoader , o
En el programa Java, cree una instancia de ACCClassLoader y defínala como cargador de clases del contexto del subproceso activo utilizando Thread.currentThread().setContextClassLoader antes de utilizar las clases e interfaces ACC incrustadas.
Puede crear y almacenar el temporizador EJB de MySQL como usuario, pero cuando intenta configurar el servicio de temporizador EJB para MySQL se genera la siguiente excepción (SQLException executing statement):
"CREATE TABLE EJB__TIMER__TBL (TIMERID VARCHAR(255) NOT NULL, BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDURATION BIGINT, OWNERID VARCHAR(255), STATE INTEGER, LASTEXPIRATIONRAW BIGINT, PKHASHCODE INTEGER, CREATIONTIMERAW BIGINT, CONTAINERID BIGINT, PRIMARY KEY (TIMERID))": com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE VARCHAR(255), INTERVALDU' at line 1|#] |
Para obtener más información, consulte el Informe del problema.
Asegúrese de que la datasource-classname especificada para la agrupación del temporizador representa una fuente de datos XA.
Pasos específicos de MySQL:
Desempaquete glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war .
Agregue lo siguiente a WEB-INF/classes/__ejb_timer_mappings.xml después de <persistence-unit-metadata>:
<persistence-unit-defaults> <delimited-identifiers/> </persistence-unit-defaults>
Vuelva a empaquetar el archivo WEB-INF/classes/__ejb_timer_mappings.xml.
(Este paso sólo es necesario si la instalación actual ya ha utilizado el servicio de temporizador EJB.) Cree manualmente el EJB__TIMER__TBL en la base de datos mediante esta instrucción de creación:
CREATE TABLE `EJB__TIMER__TBL` (`TIMERID` VARCHAR(255) NOT NULL, `BLOB` BLOB(64000), `INITIALEXPIRATIONRAW` BIGINT, `SCHEDULE` VARCHAR(255), `INTERVALDURATION` BIGINT, `OWNERID` VARCHAR(255), `STATE` INTEGER, `LASTEXPIRATIONRAW` BIGINT, `PKHASHCODE` INTEGER, `CREATIONTIMERAW` BIGINT, `CONTAINERID` BIGINT, PRIMARY KEY (`TIMERID`))
El comando deploy falla en un servidor seguro si no se utiliza la opción --secure.
Para obtener más información, consulte el Informe del problema.
Utilice la opción --secure al enviar el subcomando deploy a un servidor seguro.
Uno de los certificados de autoridad del truststore de Enterprise Server caducó el 7 de enero 2010. El certificado es cacerts.jks. Se genera un mensaje de error al iniciar que indica que el certificado ha caducado:
Version: V1 Subject: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US Signature Algorithm: MD2withRSA, OID = 1.2.840.113549.1.1.2 Key: SunPKCS11-Solaris RSA public key, 1000 bits (id 17891456, session object) modulus: public exponent: Validity: [From: Tue Nov 08 19:00:00 GMT-05:00 1994, To: Thu Jan 07 18:59:59 GMT-05:00 2010] Issuer: OU=Secure Server Certification Authority, O="RSA Data Security, Inc.", C=US SerialNumber: [ 02ad667e 4e45fe5e 576f3c98 195eddc0] |
Para obtener más información, consulte el Informe del problema.
El certificado de autoridad caducado se eliminó en la actualización 18 de Java SE 6. También se eliminará del truststore de Enterprise Server en una futura actualización.
Puede hacer caso omiso del mensaje de error y usar la actualización o eliminar los mensajes de error. Para dejar de recibir los mensajes de error, utilice keytool para suprimir el certificado del truststore de Enterprise Server:
=> cd domains/domainX/config => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
Para evitar que el certificado caducado siga apareciendo en dominios creados posteriormente, elimínelo también del truststore usado como plantilla:
=> cd glassfish/lib/templates => cp cacerts.jks cacerts.jks.save => keytool -delete -keystore cacerts.jks -alias verisignserverca Enter keystore password: |
Para obtener más información sobre la contraseña del keystore, consulte la información sobre contraseñas maestras y keystores de la sección Authentication de Sun GlassFish Enterprise Server v3 Administration Guide.