Esta sección contiene una lista de los problemas conocidos de Message Queue 4.1. Se describen las siguientes áreas del producto:
Para encontrar una lista de los fallos actuales, sus estados y sus soluciones alternativas, invitamos a los miembros de Java Developer Connection™ a visitar la página Bug Parade del sitio web Java Developer Connection. Compruebe la página antes de informar de un nuevo error. A pesar de que no se muestran todos los problemas de Message Queue la página es un buen punto de partida para ver si un problema ha sido comunicado.
http://bugs.sun.com/bugdatabase/index.jsp
Aunque la suscripción a Java Developer Connection es gratuita, es necesario registrarse. Encontrará información sobre cómo ser miembro de Java Developer Connection en la página web "For Developers" de Sun.
Para informar de un nuevo problema o enviar una petición de sobre nuevas funcionalidades, envíe un mensaje a imq-feedback@sun.com .
Esta sección describe los problemas relacionados con la instalación de la versión 4.1 de Message Queue.
La versión 4.1 de Message Queue se instala mediante un nuevo programa de instalación, que también instala y actualiza los componentes compartidos que necesita Message Queue; por ejemplo, JDK, las bibliotecas de NSS, JavaHelp, etc. Este programa de instalación y el instalador de Java Enterprise System (JES) no comparten el mismo registro del producto. Si una versión de Message Queue que se instaló con JES se elimina y se actualiza a Message Queue 4.1 con el instalador de Message Queue, es posible que el registro del producto de JES se encuentre en un estado inconsistente. Esto significa que, al ejecutar el desinstalador de JES, es posible que se elimine sin querer Message Queue 4.1 y los componentes compartidos de los que depende y que no instaló él.
La mejor manera de actualizar el software que instaló el instalador de JES es la siguiente:
Desinstale Message Queue y sus componentes compartidos con el desinstalador de JES.
Vuelva a instalar Message Queue 4.1. con el instalador de Message Queue.
La pantalla de selección de JDK del instalador de Message Queue 4. 1 le permite seleccionar el JDK y JRE que exista en el sistema para que lo utilice Message Queue. Desafortunadamente, la lista que aparece también incluye el JRE utilizado para ejecutar la aplicación del instalador. Este JRE forma parte del paquete del instalador y no se instala realmente en el sistema. (Fallo 6585911)
El JRE que utiliza el instalador es reconocible por su ruta, que debería encontrarse en el directorio comprimido del instalador y debería incluir el subdirectorio mq4_1–. Por ejemplo:
algún_directorio/mq4_1–installer/usr/jdk/instances/jdk1.5.0/jre
No seleccione este JRE para que lo use Message Queue. Seleccione en su lugar otro JDK del sistema. Si no existe ninguno, siga la indicación recomendada para su plataforma.
Solaris o Linux: Seleccione "Instalar y utilizar el JDK predeterminado".
Windows: Descargue e instale un JDK antes de ejecutar el instalador de Message Queue 4.1.
Al instalar Message Queue en Windows, tenga presente las siguientes limitaciones:
El instalador no añade entradas de Message Queue en el menú Inicio>Programas (Fallo 6567258). Para iniciar la consola de administración, utilice la línea de comando tal y como se indica en Starting the Administration Console de Sun Java System Message Queue 4.1 Administration Guide.
El instalador no añade el directorio IMQ_HOME\mq\bin al entorno variable PATH.(Fallo 6567197). Los usuarios deben añadir esta entrada a su entorno variable PATH o proprocionar un nombre de ruta completa al invocar las utilidades de Message Queue (IMQ_HOME\mq\bin\comando).
El instalador no agrega entradas al registro de Windows para indicar que Message Queue está instalado.
Al ejecutarlo en modo silencioso, el instalador retorna inmediatamente. La instalación se lleva a cabo, pero el usuario no tiene forma de saber cuándo se ha completado la instalación silenciosa. (Fallo 6586560)
El modo de texto (installer –t) no se admite en Windows. Al ejecutar el instalador en modo de texto en Windows, aparece un mensaje de error. Este mensaje se muestra en inglés aunque el instalador se haya ejecutado en configuraciones regionales de lengua no inglesa. (Fallo 6594142)
La cadena "Install Home" (Inicio de instalación) aparece en inglés en la pantalla del instalador aunque éste se ejecute en configuraciones regionales de lengua no inglesa. (Fallo 6592491)
Un mensaje de error y el estado "incompleto" del resumen confunde al usuario que intenta hacer la instalación con el comando installer-n. En realidad, el comando funciona. (Fallo 6594351)
Estos son los problemas que se producen al hacer la instalación en la plataforma Linux
En el panel de selección de JDK, la lista desplazable sólo muestra un elemento. Esto dificulta la selección de otro JDK de la lista. (Fallo 6584735)
Si el JDK es actual y el usuario selecciona "Instalar JDK predeterminado" en la pantalla de selección de JDK, el instalador seguirá intentando instalarlo e informará de que no puede instalar el paquete. La instalación se realiza correctamente a pesar de este problema. (Fallo 6581310)
Si el instalador se ejecuta en modo de ejecución seca (installer –n ), la pantalla de resumen muestra algunos mensajes de error y el estado de instalación como "incompleto": Esto es incorrecto y confunde al usuario; una ejecución seca no instala nada en el sistema, sino que crea sólo un archivo de respuesta que puede utilizarse después para hacer la instalación.(Fallo 6594351)
Si en su sistema existen versiones anteriores de localización RPM de Message Queue, la instalación de la versión 4.1 de este producto (que se produce al marcar la casilla "Instalar paquetes multilingües de Message Queue" en la pantalla Paquetes multilingües) fallará. La instalación fracasa debido a que se produce un conflicto con los paquetes Il8 de una instalación anterior de 3.7 UR1. (Fallo 6594381)
Solución alternativa Elimine manualmente la localización RPM con el comando rpm –e antes de ejecutar el instalador 4.1. Para determinar qué RPM es relevante aquí, consulte Message Queue Packages (RPMs) de Sun Java System Message Queue 4.1 Installation Guide.
Los siguientes problemas afectan a la instalación en todas las plataformas:
Cuando el instalador está en proceso de instalar Message Queue 4.1 y aparece la pantalla de progreso, el botón Cancelar está activo. Si en ese momento se pulsara el botón Cancelar, la instalación quedaría incompleta o interrumpida. (Fallo 6595578)
La pantalla resumen del instalador contiene una serie de vínculos que, al pulsar sobre ellos, activan un registro o un visor de página resumen. Al cerrar la ventana de este visor con el botón X de la ventana en lugar de con el botón marcado con la etiqueta "cerrar", ya no podrá volver a abrir la ventana del visor. (Fallo 6587138)
Solución alternativa Cierre la ventana con el botón de la etiqueta Cerrar.
Cuando un sistema tiene versiones anteriores de Message Queue y NSS/NSPR, la actualización del instalador sólo enumera los Message Queue que necesitan actualizarse, pero no indica si NSS/NSPR también lo necesita. Este problema sólo existe con la pantalla de actualización, ya que todo el software relevante se actualizará como parte del proceso de instalación (tal y como se indica en la pantalla PreparadoParaInstalarse que muestra la información correcta). (Fallo 6580696)
Solución alternativa No hace falta ninguna, ya que los archivos NSS/NSPR se instalan si no están actualizados y se desinstalan las versiones más antiguas.
Cuando el instalador o el desinstalador se ejecutan en modo texto (installer –t ), la pantalla Resumen muestra el directorio que contiene los archivos de registro y de resumen pero no enumera los nombres de estos archivos. (Fallo 6581592)
Si se especifica el nombre de un archivo que no existe, aparece un mensaje de error incoherente y confuso. (Error 6587127)
El instalador muestra la información de la versión de Message Queue de una manera poco clara. (Fallo 6586507)
En la plataforma Solaris, consulte la tabla siguiente para determinar la versión que se está instando.
Tabla 1–11 Formatos de versión
La versión como se muestra en el instalador |
Versión Message Queue |
---|---|
4.1.0.0 |
4.1 |
3.7.0.1 |
3.7 UR1 |
3.7.0.2 |
3.7 UR2 |
3.7.0.3 |
3.7 UR3 |
3.6.0.0 |
3.6 |
3.6.0.1 |
3.6 SP1 |
3.6.0.2 |
3.6 SP2 |
3.6.0.3 |
3.6 SP3 |
3.6.0.4 |
3.6 SP4 |
Para versiones con parche de 3.6 SP4 (por ejemplo, 3.6 SP4 Patch 1), la cadena de las versiones que muestra el instalador sigue siendo la misma. Debe ejecutar el comando imqbrokerd –version para determinar la versión exacta.
En la plataforma Linux, no es posible ofrecer una traducción sencilla del formato. El número de versión que muestra el instalador en Linux es de la siguiente forma:
<NúmVersionMayor>.<NúmVersionMenor>-<unNúm.>
Por ejemplo, 3.7–22. Esto quiere decir que se trata de una de las versiones 3.7, pero no especifica cuál. Para saber cuál es, ejecute el comando imqbrokerd —version .
Estos son los problemas relacionados con la localización.
Cuando el instalador se ejecuta en modo texto (installer –t ) en una configuración regional de lengua no inglesa, los caracteres de varios bytes aparecen como texto basura. (Fallo 6586923)
La pantalla de resumen de la instalación permite al usuario ver un informe resumido. Desafortunadamente, este informe (una página HTML) muestra texto basura cuando el instalador se ejecuta en configuraciones regionales de varios bytes. (Error 6587112)
Solución alternativa Edite el archivo HTML para corregir el conjunto de caracteres específicos. El archivo HTML debería incluir algo parecido a esto:
meta http-equiv="Content-Type" content="text/html; charset=UTF-8
Sustituya "UTF-8" por locale_name .UTF-8. Por ejemplo, ja_JA.UTF-8 o ko.UTF-8 en Solaris; ja_JA.utf8 o ko_KO.utf8 en Linux.
En la pantalla de progreso del instalador, la barra de progreso muestra caracteres extraños. La información sobre herramientas no es modificable en configuraciones regionales de lengua no inglesa. (Fallo 6591632)
El modo de texto (installer –t) no se admite en Windows. Al ejecutar el instalador en modo de texto en Windows, aparece un mensaje de error. Este mensaje se muestra en inglés aunque el instalador se haya ejecutado en configuraciones regionales de lengua no inglesa. (Fallo 6594142)
La pantalla de licencia del instalador muestra el texto de licencia en inglés, con independencia de la configuración regional en la que se haya ejecutado. (Fallo 6592399)
Solución alternativa Para acceder a los archivos de licencia traducidos, busque el archivo LICENSE_MULTILANGUAGE.pdf.
El texto de ayuda sobre el uso del instalador no está traducido. (Fallo 6592493)
La cadena "Ninguno" que aparece en la página resumen del instalador no es modificable en inglés. (Fallo 6593089)
La página de copyright sólo aparece traducida para la configuración regional francesa. (Fallo 6590992)
Cuando el instalador se ejecuta en una configuración regional alemana, la pantalla de Bienvenida no muestra el texto completo que se ve en otras configuraciones. (Fallo 6592666)
La cadena "Inicio de instalación" que se ve en la página del instalador del mismo nombre no está traducida. Aparece en inglés aunque el instalador se haya ejecutado en configuraciones regionales de lengua no inglesa. (Fallo 6592491)
Cuando el instalador se ejecuta en modo texto (installer –t ), aparecen las opciones de respuesta inglesas "Yes" y "No", aunque el instalador se haya ejecutado en otra configuración regional. (Error 6593230)
La información sobre herramientas del botón Examinar de la pantalla de selección de JDK del instalador no es modificable en inglés. (Fallo 6593085)
En versiones anteriores de Message Queue, podía utilizarse la opción —p o —password para especificar interactivamente una contraseña para los siguientes comandos: imqcmd, imqbrokerd y imdbmgr. Al comenzar con la versión 4.0., estas opciones se han desaprobado. Debe facilitar las contraseñas de la siguiente manera.
Establezca el valor que desee para la propiedad de la contraseña en un archivo utilizado para guardar sólo contraseñas.
Utilice la siguiente sintaxis para especificar contraseñas en el archivo de la contraseña.
ContraseñaPropiedadNombre= MiContraseña
Transmita el nombre del archivo de la contraseña con la opción —passfile .
Una nueva contraseña puede contener una o varias de las contraseñas enumeradas más abajo.
Una contraseña keystore utilizada para abrir el keystore de SSL. Utilice la propiedad imq.keystore.password para especificar la contraseña.
Una contraseña de depósito LDAP utilizada para conectar de forma segura con un directorio LDAP si la conexión no es anónima. Utilice la propiedad imq.user_repository.ldap.password para especificar esta contraseña.
Una contraseña de base de datos JDBC utilizada para conectarse con la base de datos compatible con JDBC. Utilice la propiedad imq.persist.jdbc.vendorName.password para especificar esta contraseña. Este componente de NombreDel Proveedor del nombre de la propiedad es una variable que especifica el proveedor de la base de datos. Las opciones son hadb, derby, pointbase, oracle o mysql.
Una contraseña del comando imqcmd (para realizar tareas administrativas del agente). Utilice la propiedad imq.imqcmd.password para especificar esta contraseña.
En el siguiente ejemplo, la contraseña de la base de datos JDBC se ha establecido como abracadabra.
imq.persist.jdbc.mysql.password=abracadabra
Puede configurar el agente para que utilice el archivo de contraseña creado por usted de las siguientes formas:
Establezca las siguientes propiedades en el archivo config.properties del agente.
imq.passfile.enabled=true |
imq.passfile.dirpath=MiDirectorioDeArchivo |
imq.passfile.name=NombreDeMiArchivoContraseñas |
Utilice la opción —passfile del comando imqbrokerd.
imqbrokerd —passfile NombreDeMiArchivoContraseñas
Esta sección trata de los problemas generales de Message Queue 4.1. Algunos de ellos se introdujeron ya en versiones anteriores de Message Queue.
Cuando un cliente JMS que utiliza transporte HTTP finaliza de forma abrupta (por ejemplo por el uso de Ctrl-C), el agente tarda aproximadamente un minuto a liberar la conexión del cliente y todos los recursos asociados.
Si se inicia otra instancia del cliente dentro de este periodo de un minuto y si ésta intenta utilizar el mismo ClientID, suscripción duradera o cola, es posible que obtenga la excepción "ID de cliente ya en uso". No se trata de un problema real, es simplemente un efecto secundario del proceso de finalización descrito anteriormente. Si el cliente se inicia después de un retraso de aproximadamente un minuto, todo debería funcionar correctamente.
Clientes de SOAP. Antes, la implementación jar de SAAJ 1.2 solía referirse a mail.jar y mail.jar no necesitaba estar en CLASSPATH. En SAAJ 1.3 ya no existe esta referencia; por lo que los clientes de Message Queue deben poner mail.jar explícitamente en CLASSPATH.
Los siguientes problemas son generados por la administración y la configuración de Message Queue
The imqadmin and imqobjmgr utilities throw an error when the CLASSPATH contains double quotes on Windows machines (Bug ID 5060769).
Solución alternativa Puede hacer caso omiso de este mensaje de error; el agente se encargará de notificar correctamente a los usuarios de cualquier error. Este error no afecta a la fiabilidad del sistema.
La opción -javahome en todos los scripts de Solaris y Windows no funciona si el valor proporcionado contiene un espacio (Bug ID 4683029).
La opción javahome es utilizada por las órdenes y utilidades de Message Queue para especificar un entorno de tiempo de ejecución alternativo compatible con Java 2. Sin embargo, el nombre de la ruta del entorno de tiempo de ejecución de Java alternativo no debe contener espacios. A continuación le mostramos ejemplos de rutas que incluyen espacios.
Windows: C:/jdk 1.4
Solaris: /work/java 1.4
Solución temporal Instale el entorno de tiempo de ejecución de Java en un lugar cuya ruta no contenga espacios.
El atributo imqQueueBrowserMaxMessagesPerRetrieve especifica el número máximo de mensajes que el tiempo de ejecución del cliente recupera a la vez cuando examina el contenido de una cola. Tenga en cuenta que la aplicación del cliente siempre obtendrá todos los mensajes de la cola. El atributo imqQueueBrowserMaxMessagesPerRetrieve afecta la forma en la que los mensajes de la cola son empaquetados para entregarlos al tiempo de ejecución del cliente (menos paquetes grandes o más paquetes pequeños), pero no afecta la cantidad total de mensajes examinados. Si cambia el valor de este atributo, podría empeorar el rendimiento, pero no influirá en el número de datos que obtendrá la aplicación del cliente (Fallo ID 6387631).
Los problemas siguientes afectan al agente de Message Queue.
Ha habido alguna confusión sobre cómo configurar el agente para la entrega round-robin (operación por turnos). Esta solución es sencilla y configurable.
Establezca el atributo maxNumActiveConsumers del destino en -1. De esta forma, se activa la entrega round-robin.
Establezca el atributo consumerFlowLimit del destino en 1. Esto especifica el número de mensajes entregados a un solo consumidor antes de que la entrega pase al siguiente. Si desea un empaquetado distinto, establezca este atributo en el valor que desee. Por defecto, se entregan a cada consumidor cien mensajes.
No se puede tener acceso al agente cuando un almacén persistente abre demasiados destinos (Bug ID 4953354).
Solución temporal Esta condición está causada por el hecho de que el agente ha llegado al límite de archivos abiertos del descriptor del sistema. En Solaris y Linux utilice la orden ulimit para incrementar el límite del descriptor de archivos.
Los consumidores se quedan sin referencia cuando se destruye un destino ( Bug ID 5060787).
Los consumidores activos se quedan sin referencia cuando se destruye un destino. En ese caso, dejan de recibir mensajes (aunque se vuelva a crear el destino).
Solución temporal No existe ninguna solución temporal para este problema.
Estos son los problemas que afectan a los agentes de clúster.
Sólo se admiten en esta versión los clústeres de agentes totalmente conectados. Esto significa que todos los agentes de un clúster deben establecer comunicación directamente con todos los demás agentes del clúster. Si se conecta a agentes mediante el argumento de orden imqbrokerd -cluster, asegúrese de que se incluyen todos los agentes del clúster.
Un agente que utilice HADB no puede gestionar mensajes superiores a 10 MB. (Fallo 6531734)
Si un cliente está conectado a un agente de alta disponibilidad, el tiempo de ejecución del cliente intentará volver a establecer la conexión hasta que lo consiga (con independencia de cuál sea el valor de imqAddressListIterations).)
Un cliente conectado a un agente que es parte de un clúster por ahora no puede utilizar QueueBrowser para ver las colas que están ubicadas en agentes remotos del clúster. El cliente sólo puede examinar el contenido de las colas que se encuentran en el agente al que está directamente conectado. El cliente puede continuar enviando mensajes a cualquier cola o consumiendo mensajes desde una cola de cualquier agente del clúster; esta limitación sólo afecta a las funciones de exploración.
En un clúster convencional, si desea "clustear" un agente de 4.1 con un agente 3.x, debe establecer la propiedad imq.autocreate.queue.maxNumActiveConsumers=1 del clúster 4.1. De lo contrario, los agentes no serán capaces de establecer una conexión de clúster.
Al convertir un clúster de alta disponibilidad, puede utilizar la utilidad Message Queue Manager (imqdbmgr) para convertir un almacén de datos persistentes de un HADB independiente existente en un almacén HADB. El comando es el siguiente:
imqdbmgr upgrade hastore
Puede utilizar esta utilidad en los siguientes casos:
Para mover un almacén HADB independiente 4.0 a otro compatido 4.1. En este caso, el agente actualizará automáticamente el almacén. Puede ejecutar el comando imqdbmgr para convertir el almacén de datos actualizado para uso compartido.
Para mover un almacén HADB independiente 4.1 a otro compatido. En este caso, sólo tendrá que ejecutar el comando imqdbmgr de arriba para convertir el almacén de datos para uso compartido.
Dado que este comando sólo admite la conversión de los almacenes HADB, no es posible utilizarlo para convertir los almacenes basados en archivos u otros almacenes de JDBC a un almacén HADB compartido. Si ejecutaba antes una versión 3.x de Message Queue, deberá crear un almacén HADB y después migrar manualmente sus datos a ese almacén para utilizar la función de alta disponibilidad.
La conversión a un almacén HADB con este comando imqdbmgr upgrade hastore puede fallar con el mensaje "hay demasiados bloqueos establecidos" si el almacén contiene más de 10.000 mensajes. (Fallo ID 6588856)).
(Solución alternativa) Utilice el siguiente comando para aumentar el número de bloqueos.
hadbm set NumberOfLocks=<desiredNumber>
Para más información, consulte "Problemas de HADB" en la Guía de resolución de problemas de Sun Java System Application Server 9.1 Enterprise Edition.
Si se confirman más de 500 mensajes remotos en una transacción, el agente podría devolver el error "HADB-E-12815: Agotado el espacio de memoria de la tabla." (Fallo ID 6550483)
Para más información, consulte "Problemas de HADB" en la Guía de resolución de problemas de Sun Java System Application Server 9.1 Enterprise Edition.
En un clúster de agente, el agente coloca mensajes en la cola para una conexión remota que no se ha iniciado (Fallo ID 4951010).
Solución alternativaEl consumidor recibirá los mensajes cuando se establezca la conexión. Los mensajes se enviarán a otro consumidro si se cierra la conexión del consumidor.
Al consumir más de un mensaje de un agente remoto de una transacción, es posible que se registre en el agente el siguiente mensaje de error. El mensaje es benigno y puede omitirse:
[26/Jul/2007:13:18:27 PDT] WARNING [B2117]: Error al reconocer el mensaje de mq://129.145.130.95:7677/?instName=a&brokerSessionUID=3209681167602264320: ackStatus = NOT_FOUND(404)\ Motivo = Actualización del estado de la transacción remota a CONFIRMADO(6): transacción 3534784765719091968 no encontrada, la transacción puede haber sido ya confirmada. AckType = MSG_CONSUMED MessageBrokerSession = 3209681167602264320 TransactionID = 3534784765719091968 SysMessageID = 8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690 ConsumerUID = 3534784765719133952\par [26/Jul/2007:13:18:27 PDT] AVISO Notifi. conf. transacc. [8-129.145.130.95(95:fd:93:91:ec:a0)-33220-1185481094690, [consumer:3534784765719133952, type=NONE]] TUID=3534784765719091968 got response: com.sun.messaging.jmq.jmsserver.util.BrokerException: Actualizar estado de transacción remota a CONFIRMADO(6): transacción 3534784765719091968 no encontrada, la transacción puede haber sido ya confirmada: com.sun.messaging.jmq.jmsserver.util.BrokerException: Actualizar estado de transacción remota a CONFIRMADO(6): transacción 3534784765719091968 no encontrada, la transacción puede haber sido ya confirmada.r
El mensaje se registra al notificar la confirmación al agente de inicio del mensaje para posteriores mensajes de la transacción cuando la propiedad imq.txn.reapLimit es baja comparada con el número de mesajes remotos de una transacción. (Fallo 6585449)
Solución alternativa Para evitar este mensaje, aumente el valor de la propiedad imq.txn.reapLimit.
En la plataforma Windows, el método getTransactionInfo de Transaction Manager Monitor MBean devuelve información de la transacción con un tiempo de creación de transacción incorrecto (Fallo ID 6393359).
Solución alternativa Utilice el método getTransactionInfoByID de Transaction Manager Monitor MBean en su lugar.
Es necesario que tenga en cuenta dos cuestiones relacionadas con la compatibilidad con SOAP
Al comenzar con esta edición de la versión 4.0 de Message Queue, la compatibilidad con los objetos administrados por SOAP era discontinua.
El desarrollo de SOAP depende de varios archivos: SUNWjaf, SUNWjmail, SUNWxsrt y SUNWjaxp. En la versión 4.1 de Message Queue, estos archivos sólo están disponibles si ejecuta Message Queue con JDK versión 1.6.0 ó superior.