Notas de la versión Sun ONE Message Queue 3.0.1 SP2

Notas de la versión Sun™ ONE Message Queue

Versión 3.0.1 SP2

Número de pieza 817-3825-10

Agosto de 2003

Estas notas de la versión contienen información importante disponible en el momento del lanzamiento de la versión 3.0.1 Service Pack 2 (SP2), de Sun™ Open Net Environment (Sun ONE) Message Queue (MQ). Aquí se tratan nuevas funciones y mejoras, problemas y limitaciones conocidos, notas técnicas e información de otro tipo. Lea este documento antes de empezar a utilizar MQ 3.0.1 SP2.

La versión más actualizada de estas notas de la versión se encuentra en el sitio Web de documentación de Sun ONE: http://docs.sun.com/?p=/coll/S1_MessageQueue_301. Compruebe el sitio Web antes de instalar y configurar el software y después de forma periódica para ver los manuales y las notas de la versión más actualizados.

En estas notas de la versión se incluyen los siguientes apartados:


Historial de revisiones

Tabla 1  Historial de revisiones 

Fecha

Descripción de los cambios

Agosto de 2003

Se han realizado los siguientes cambios en este documento:

Octubre de 2002

Versión inicial de este documento


Compatibilidad con Java™ Message Service (JMS)

Se ha certificado que la versión MQ 3.0.1 es compatible con la especificación Java Message Service (JMS) 1.1: ha superado el Conjunto de pruebas de compatibilidad (Compatibility Test Suite, CTS) de JMS 1.1.

MQ 3.0.1, que es el proveedor nativo JMS de Sun ONE Application Server 7, también ha superado la prueba CTS J2EE 1.3.1 de Sun ONE Application Server 7 (que requiere compatibilidad con JMS 1.0.2b).


Novedades de Message Queue 3.0.1 SP2

MQ 3.0.1 SP2 es una actualización de MQ 3.0.1 SP1 (que era una versión con errores sin funciones nuevas). MQ 3.0.1 SP1 era una actualización de MQ 3.0.1. En estas Notas de la versión, las referencias a las versiones 3.0.1 significan generalmente 3.0.1, 3.0.1 SP1 y 3.0.1 SP2 respectivamente.

El producto MQ 3.0.1 SP2 incluye todas las nuevas funciones de MQ 3.0 y 3.0.1, además de dos funciones adicionales de 3.0.1 SP2.

Nuevas funciones de Message Queue 3.0.1 SP2

MQ 3.0.1 SP2 incluye dos nuevas capacidades no disponibles en MQ 3.0.1:

Nuevas funciones de Message Queue 3.0.1

MQ 3.0.1 incluye dos nuevas capacidades no disponibles en MQ 3.0:

Nuevas funciones de Message Queue 3.0

MQ 3.0 incluía una serie de cambios frente a la versión 2.0 del producto: iMQ 2.0 (e iMQ 2.0, Service Pack 1).

Entre estos cambios, el más destacable es que el producto está ahora disponible en dos ediciones: Platform Edition y Enterprise Edition.

Platform Edition     Ofrece compatibilidad básica con JMS y es ideal para implementaciones a pequeña escala y entornos de desarrollo.

Enterprise Edition     Ofrece compatibilidad con HTTP/HTTPS, escalabilidad mejorada y funciones de seguridad; es ideal para implementaciones a gran escala.

(Consulte la introducción de la Guía del administrador de MQ o de la Guía del desarrollador de MQ para obtener más información sobre estas ediciones).

Las descripciones de los cambios del producto MQ 3.0.1 que aparecen a continuación están agrupadas según hagan referencia a ambas ediciones o sólo a Enterprise Edition.

En Enterprise Edition y Platform Edition

Sólo en Enterprise Edition


Actualizaciones de la documentación de Message Queue

Los siguientes documentos de MQ 3.0.1 y MQ 3.0.1 SP2 se han actualizado desde la versión 3.0 del producto. Estos documentos actualizados se encuentran en el sitio Web de documentación de Sun ONE: http://docs.sun.com/coll/S1_MessageQueue_301.

Installation Guide

La Guía de instalación de MQ se ha actualizado para incluir los cambios realizados en MQ 3.0.1 SP2 (consulte "Nuevas funciones de Message Queue 3.0.1 SP2").

Administrator's Guide

La Guía del administrador de MQ se ha actualizado para incluir las nuevas funciones disponibles en MQ 3.0.1 (consulte "Nuevas funciones de Message Queue 3.0.1").

Developer's Guide

La Guía del desarrollador de MQ se ha actualizado para incluir las nuevas funciones disponibles en MQ 3.0.1 (consulte "Nuevas funciones de Message Queue 3.0.1").


Problemas de compatibilidad

Las versiones MQ 3.0.1 son totalmente compatibles con MQ 3.0 y no es necesario realizar cambios en la configuración del agente, los objetos administrados, las herramientas de administración o las aplicaciones cliente para actualizar MQ 3.0 a MQ 3.0.1.

No obstante, las versiones MQ 3.0.1 (denominadas a partir de ahora en esta sección simplemente 3.0.1) suelen no ser compatibles con iMQ 2.0. Concretamente, se pueden producir una serie de problemas que deberá resolver al actualizar iMQ 2.0 (o iMQ 2.0 Service Pack 1) a MQ 3.0.1:

Compatibilidad del agente

Un agente de MQ 3.0.1 no interactuará con un agente de iMQ 2.0 debido a los cambios realizados en las propiedades del agente y el esquema del almacén persistente. No obstante, algunos datos de iMQ 2.0 son compatibles con MQ 3.0.1, como se muestra en la Tabla 2, y se pueden conservar al actualizar a MQ 3.0.1. Al actualizar iMQ 2.0 a MQ 3.0.1, debe tener en cuenta los siguientes puntos:

Compatibilidad de objetos administrados

Los objetos administrados de MQ 3.0.1 se han mejorado con nuevos atributos y se han cambiado los nombres de los atributos de iMQ 2.0. Por lo tanto, al actualizar iMQ 2.0 a MQ 3.0.1, debe tener en cuenta los siguientes puntos:

Compatibilidad de herramientas de administración

Debido al cambio de nombre de muchos archivos y directorios (especialmente para sustituir la cadena "jmq" por "imq"), se han modificado todas las utilidades de línea de comandos, las propiedades del agente, los atributos de objetos administrados y los nombres de archivos internos de MQ 3.0.1. Por lo tanto, al actualizar iMQ 2.0 a MQ 3.0.1, debe tener en cuenta los siguientes puntos:

Compatibilidad de cliente

Al actualizar iMQ 2.0 a MQ 3.0.1, debe tener en cuenta los siguientes puntos:


Limitaciones conocidas

Las limitaciones que se muestran en esta sección están agrupadas según hagan referencia a Enterprise Edition y a Platform Edition de las versiones MQ 3.0.1 o sólo a Enterprise Edition.

En Enterprise Edition y Platform Edition

Sólo en Enterprise Edition


Errores conocidos

Esta sección contiene una lista de los errores conocidos más importantes en el momento del lanzamiento de MQ 3.0.1 SP2.

Para obtener una lista de los errores actuales, su estado y las soluciones, los miembros de Java Developer Connection (TM) deben consultar la página "Bug Parade" en el sitio Web de Java Developer Connection. Compruebe la página antes de informar de un nuevo error. No encontrará aquí todos los errores de MQ, se trata simplemente de un buen punto de partida para saber si se ha notificado un error.

La página en cuestión es:

Para informar de un nuevo error o enviar una solicitud de función, envíe un mensaje de correo electrónico a imq-feedback@sun.com.

Tabla 3  Descripciones de errores 

Número de error

Detalles

4431924

imqadmin: los diálogos modales pueden provocar una situación de interbloqueo

La consola de administración (imqadmin) utiliza diálogos modales para las aplicaciones. La mayoría de estos diálogos aparecen de forma explícita al interactuar con la interfaz gráfica de usuario; por ejemplo, si selecciona la opción de menú "Añadir agentes". Sin embargo, algunos diálogos pueden aparecer también a causa de la pérdida de la conexión de agente. Al abrirse varios diálogos, la consola de administración se bloquea. No podrá cerrar los diálogos modales con el botón "Cerrar".

Solución del problema: Cierre el diálogo superior utilizando los controles del administrador de ventanas. Por ejemplo:

       - el botón "X" situado en la esquina superior derecha en Windows

       - la opción de menú "Cerrar" del administrador de ventanas en Solaris

4449354

En casos poco frecuentes, si se llama a los métodos Connection.stop, Connection.start y Connection.close al mismo tiempo que se llama a Session.recover y Session.rollback (en subprocesos independientes), se puede provocar una petición de reenvío de mensajes inesperada.

Solución del problema: asegúrese de que las llamadas a los métodos Connection… y Session… especificados anteriormente están serializadas mediante el mismo subproceso o mediante sincronización.

4683029

La opción -javahome de todas las secuencias de comandos de Solaris/Win no funciona si el valor incluye un espacio en blanco.

Los comandos y utilidades de MQ utilizan la opción -javahome para especificar un tiempo de ejecución alternativo, compatible con Java 2. Sin embargo, la ruta al tiempo de ejecución Java alternativo no debe contener espacios en blanco.

Éstos son ejemplos de rutas que contienen espacios:

      Windows:

      C:\jdk 1.4 (En Windows, la ruta puede contener espacios en blanco si se pone entre comillas, por ejemplo, "C:\jdk 1.4")

      Solaris:

      /work/java 1.4

Solución del problema: Instale el tiempo de ejecución Java en una ubicación o ruta que no contenga espacios en blanco.

4689962

En la versión en idioma japonés, la salida de varias utilidades de administración no está alineada correctamente en columnas y los bordes son demasiado cortos.

Solución del problema: Ninguna.

4703406

QueueBrowser debería funcionar sin llamar primero a connection.start().

Se debe llamar a Connection.start() en una conexión antes de que QueueBrowser pueda examinar una cola. Si no puede llamar a Connection.start(), la enumeración de QueueBrowser bloqueará nextElement() y acabará devolviendo una excepción java.util. NoSuchElementException.

Solución del problema: Llame a Connection.start() antes de llamar a QueueBrowser.getEnumeration().

4753010

Crecimiento ilimitado del segmento del montón nativo del proceso Java con VM de servidor.

Se trata de un error de Java VM que puede afectar al proceso del agente en condiciones de apertura y cierre rápidos de las conexiones de cliente. Puede provocar un crecimiento continuo e ilimitado de la memoria del proceso del agente. El agente podría quedarse bloqueado cuando se agote toda la memoria del sistema.

Puede verificar el crecimiento del segmento del montón nativo mediante la herramienta /usr/proc/bin/pmap.

Solución del problema: Obligue al agente a usar la VM de cliente, utilizando la siguiente opción de comando:

    imqbrokerd -clientvm

o puede eliminar el argumento -server en la secuencia del intérprete de comandos /usr/bin/imqbrokerd que inicia el agente, o puede actualizar a JDK 1.4.1 y utilizar la siguiente opción de comando:

    imqbrokerd -javahome JDK_1.4.1_directory

4761626

La creación y destrucción excesiva de consumidores con colas de creación automática puede provocar la pérdida de mensajes.

En situaciones de tensión poco frecuentes, es posible que se pierda un mensaje de un destino de cola de creación automática.

El error se producirá si, una vez confirmados todos los mensajes entregados desde la cola, se elimina el consumidor del último mensaje de la cola al mismo tiempo que un nuevo productor de mensajes (en una conexión diferente) envía un mensaje a esa cola. Lo que ocurre es que la cola se elimina automáticamente (puesto que está vacía, sin ningún consumidor) justo cuando llega el nuevo mensaje, por lo que se perderá este mensaje.

Solución del problema: Cree colas de forma administrativa con las herramientas de administración de MQ.

4879448

Sun ONE Message Queue versión 3.0.1 no intercambia mensajes persistentes en el disco cuando el montón alcanza los estados de memoria ROJOS.

Existe una expresión booleana que determina si un mensaje tiene una lógica incorrecta. Si es así, entonces el mensaje debe ser descartado. Esto quiere decir que, en algunos casos, los mensajes persistentes se descartarán de la memoria. Si la función de intercambio de mensajes no persistentes está desactivada, siempre se evaluarán correctamente los mensajes persistentes.

Solución del problema: Defina la siguiente propiedad del agente en el archivo config.properties o mediante la línea de comandos:
imqmemory_management.swapNPMsps=false

4883126

La función de reconexión automática no funciona correctamente.

El número de consumidores crece después de cada reconexión automática, lo que provoca que el agente envíe mensajes duplicados.

Solución del problema: Ninguna. Este error se solucionará en MQ 3.5.

4888270

La transmisión de nuevo de un mensaje enviado originalmente en una transacción provoca un error de agente.

  Si se recibe un mensaje enviado originalmente en una transacción   y el mismo objeto de mensaje se vuelve a transmitir en una sesión sin transacción, el agente informará de un error.

  Solución del problema: No utilice el mismo objeto de mensaje. En su lugar, cree un nuevo   mensaje independiente cuando desee realmente volver a transmitir ese mensaje.

4893546

El agente no libera memoria cuando se ejecuta con JDK 1.4.2 y VM de servidor

Solución del problema: Utilice la VM de cliente. El agente debería iniciarse con el siguiente comando:

imqbrokerd -clientvm


Errores solucionados en las versiones Message Queue 3.0.1

A continuación, se muestra una breve descripción de los errores más importantes solucionados en MQ 3.0.1, 3.0.1 SP1 y 3.0.1 SP2.

Para conocer los errores solucionados en MQ 3.0, consulte las Notas de la versión de MQ 3.0 disponibles en

Para obtener información más detallada sobre los siguientes errores solucionados, puede consular el informe completo en el sitio de Java Developer Connection:

Tabla 4  Errores corregidos en las versiones MQ 3.0.1  

Número de error

Descripción

4679837

En ocasiones, el cliente devuelve una excepción JMSException en la conexión. Utilice la función de cierre close() cuando se utilice TLS como transporte.

4683129

La marca de hora del registro del agente es incorrecta entre la medianoche y la 1 AM.

4688051

El cliente puede obtener una excepción EOFException cuando se creen y cierren rápidamente las conexiones con el agente.

4694971

La finalización de una transacción JTS/XA autónoma puede fallar de vez en cuando, aunque se produzca una acción XAConnection.close() normal y sin errores.

4700851

El cliente no limpia la transacción local después de finalizar una transacción XA.

4701982

No se puede ejecutar la consola de administración en Solaris o Linux si está definida la variable de entorno CLASSPATH.

4702152

Cuando existen mensajes confirmados como parte de una transacción del consumidor, el agente retiene información de estado innecesaria de cada mensaje confirmado hasta que se cierra el consumidor.

4704186

Correcciones en el archivo README (demo/jms/README) de las aplicaciones de ejemplo.

4735757

Un consumidor devolverá una excepción si se reciben más de 50 mensajes en una transacción antes de llamar a commit().

4758424

Puede reducirse el rendimiento en una cola de operación por turnos cuando se registre un mensaje de > 10 K.

4758427

Los consumidores de una cola de operación por turnos pueden quedarse bloqueados si el último mensaje en cola caduca antes de la entrega.

4770212

Al detener y reanudar un servicio, las conexiones de cliente se pueden interrumpir si no tienen mensajes pendientes.

4770518

El servicio de agente de Windows finaliza al cerrar la sesión.

4809079

El agente no se cierra adecuadamente si hay conexiones basadas en SSL.

4821708

Session.createProducer(null) devuelve una excepción NullPointerException.

4828860

El rendimiento de MQ se reduce con el selector y empeora a medida que aumenta el número de clientes.

4835586

El ciclo de restauración y realización de copias de seguridad del agente maestro puede provocar una pérdida de información de destino.

4879448

En determinadas circunstancias, el agente no intercambiará los mensajes en el disco.


Funcionalidad marcada como opcional en JMS

La especificación JMS distingue determinados elementos que son opcionales; cada proveedor JMS elige si desea implementarlos o no. La administración de estos elementos opcionales por parte del producto MQ aparece descrita a continuación:

Tabla 5  Funcionalidad opcional de JMS 

Sección de la especificación JMS

Descripción y administración de MQ

3.4.3
JMSMessageID

"Como es necesario cierto esfuerzo para crear Id. de mensaje y aumentar el tamaño de un mensaje, algunos proveedores JMS son capaces de optimizar la sobrecarga de mensajes si se les ofrece la indicación de que ese Id. de mensaje no ha sido utilizado por una aplicación. Por consiguiente, el productor de mensajes JMS informa de que se puede desactivar el Id. de mensaje."

Implementación de MQ: El producto no desactiva la generación de Id. de mensaje (se ignoran todas llamadas de setDisableMessageID() en MessageProducer). Todos los mensajes contendrán un valor de MessageID válido.

3.4.12
Reemplazo de los campos de encabezados de mensajes

"JMS no define específicamente la forma en que el administrador reemplaza los valores de campos de encabezados. No es necesario que un proveedor JMS admita esta opción administrativa."

Implementación de MQ: El producto MQ admite el reemplazo administrativo de los valores de los campos de encabezados de mensaje mediante la configuración de los objetos administrados de la fábrica de conexión.

3.5.9
Propiedades definidas por JMS

"JMS reserva el prefijo de nombre de propiedad 'JMSX' para las propiedades definidas por JMS."
"A menos que se indique lo contrario, la compatibilidad con estas propiedades es opcional."

Implementación de MQ: Las propiedades JMSX definidas por la especificación JMS 1.1 son compatibles con el producto MQ.

3.5.10
Propiedades específicas del proveedor

"JMS reserva el prefijo de nombre de propiedad 'JMS_<vendor_name>' para las propiedades específicas del proveedor."

Implementación de MQ: La finalidad de las propiedades específicas del proveedor es ofrecer funciones especiales necesarias para admitir el uso de JMS con los clientes nativos del proveedor. No deberían utilizarse para la mensajería de JMS a JMS. MQ 3.0.1 no utiliza propiedades específicas del proveedor.

4.4.8
Transacciones distribuidas

"JMS no necesita que un proveedor admita las transacciones distribuidas."

Implementación de MQ: Se admiten las transacciones distribuidas en esta versión del producto MQ.

4.4.9
Varias sesiones

"En PTP <modelo de distribución punto a punto>, JMS no especifica la semántica de receptores QueueReceiver simultáneos para la misma cola. Sin embargo, JMS no prohíbe que un proveedor admita esto." Consulte la sección 5.8 de la especificación JMS para obtener más información.

Implementación de MQ: La implementación de MQ admite tres políticas de entrega de cola: Conmutación por error, Operación por turnos y Única (predeterminada). Para obtener más información, consulte la Guía del administrador de MQ.


Notas técnicas

Esta sección contiene descripciones breves sobre los siguientes temas:

Preferencias del reloj del sistema

Cuando utilice un sistema MQ, debe asegurarse de sincronizar los relojes del sistema y evitar retrasarlos.

Sincronización recomendada

Es recomendable sincronizar los relojes en todos los hosts que interactúen con el sistema MQ. Sobre todo, si utiliza la caducidad de mensajes (TimeToLive). Un fallo de sincronización de los relojes de los hosts puede provocar que TimeToLive no funcione como se esperaba (es posible que no se entreguen los mensajes). Debe sincronizar los relojes antes de iniciar cualquier agente.

Solaris     Puede utilizar el comando rdate en un host local para sincronizarlo con un host remoto (debe ser superusuario, es decir, raíz, para ejecutar este comando). Por ejemplo, el siguiente comando sincroniza el host local (denominado Host 2) con el host remoto Host1:

Linux     El comando es parecido al de Solaris, pero debe incluir la opción "-s":

Windows     puede utilizar el comando "net" con el subcomando "time" para sincronizar el host local con uno remoto. Por ejemplo, el siguiente comando sincroniza el host local (denominado Host 2) con el host remoto Host1:

Evite retrasar los relojes del sistema

Debe evitar retrasar los relojes en los sistemas que ejecuten un agente de MQ. MQ utiliza marcas de hora para identificar los objetos internos, como las transacciones y las suscripciones duraderas. Si se atrasa el reloj del sistema, es teóricamente posible que se genere un identificador interno duplicado. El agente intenta compensar esto introduciendo cierta aleatoriedad en los identificadores y detectando el cambio de hora del reloj al ejecutarse, pero si se atrasa la hora del reloj del sistema en un periodo de tiempo significativo cuando no se está ejecutando un agente, existe un ligero riesgo de que se produzca una duplicación del identificador.

Si necesita retrasar en más de unos pocos segundos el reloj en un sistema que ejecute un agente, es recomendable que lleve a cabo esta tarea cuando no haya transacciones o suscripciones duraderas, o que la realice cuando el agente no se esté ejecutando. A continuación, espere la cantidad de tiempo que ha cambiado en el reloj antes de volver a iniciar el agente.

La solución ideal sería sincronizar los relojes antes de iniciar cualquier agente y, a continuación, utilizar la técnica adecuada para garantizar que los relojes no se cambian significativamente después de la implementación.

Limitaciones de conexión definidas por el SO en clientes y agentes

En las plataformas Solaris y Linux, el intérprete de comandos en que se ejecuta el cliente o agente impone un límite blando para el número de descriptores de archivos que puede utilizar un cliente. En el sistema MQ, cada conexión que establece un cliente, o cada conexión que acepta un agente, utiliza uno de estos descriptores de archivos. Debido a esto, no podrá ejecutar un agente o un cliente con más de 256 conexiones en Solaris o 1024 en Linux sin cambiar este límite (esta cifra es, en realidad, ligeramente menor debido a los descriptores de archivos utilizados para otros fines, como la persistencia basada en archivos).

Para cambiar este límite, consulte la página del manual de ulimit o las instrucciones de la sección "Aumento de los descriptores de archivo para mejorar el rendimiento de la persistencia basada en archivos" que aparecen a continuación. Debe cambiarse el límite en cada intérprete de comandos en el que se vaya a ejecutar un cliente o un agente.

Aumento de los descriptores de archivo para mejorar el rendimiento de la persistencia basada en archivos

En las plataformas Solaris y Linux, la velocidad de almacenamiento de mensajes en la persistencia basada en archivos predeterminada se ve afectada por el número de descriptores de archivo disponibles para el almacén de archivos (Windows no tiene un límite de descriptores de archivo). Un gran número de descriptores puede permitir que el sistema procese de forma más rápida un número extenso de mensajes persistentes.

Para mejorar el rendimiento de la implementación o de las pruebas de rendimiento, los administradores deben aumentar el número máximo de descriptores de archivos disponibles para una aplicación (en este caso, el proceso de agente) y, a continuación, aumentar el tamaño del conjunto de descriptores de archivo compartidos utilizado por el agente mediante la actualización del valor de la propiedad:

El valor de esta propiedad debe ser inferior al número máximo de descriptores de archivo disponibles en el sistema.

Por ejemplo, en Solaris puede aumentar los límites de descriptores de archivos con el comando ulimit. Los procesos heredan los límites del sistema desde el intérprete de comandos (inicio de sesión) principal. En Solaris, hay un límite "duro" y un límite "blando". Para un usuario no raíz, el número de descriptores de archivo para una aplicación no puede superar el límite blando, que, a su vez, no puede superar el límite duro.

Para comprobar los límites de descriptores de archivo actuales:

Para cambiar los límites de descriptores de archivo del usuario "raíz":

Después de esto, cualquier proceso creado desde este intérprete de comandos podrá abrir un número ilimitado de descriptores de archivo. Por lo tanto, es seguro ejecutar el comando imqbroker en este momento.

Para cambiar el límite de descriptores de archivo del usuario no raíz:

donde número1 es inferior a 1024 y número2 es inferior a número1.

Si 1024 no le parece suficiente, tiene las siguientes opciones:

Protección de datos persistentes

El agente utiliza un almacén persistente que contiene, entre otra información, archivos de mensajes almacenados temporalmente. Como estos mensajes pueden contener información propietaria, se recomienda proteger el almacén de datos frente a un acceso no autorizado.

Un agente puede utilizar la persistencia integrada o conectada.

Almacén persistente integrado

Un agente que utiliza una persistencia integrada escribe los datos persistentes en un almacén de datos de archivos planos ubicado en:

donde nombreAgente es un nombre que identifica la instancia del agente.

El directorio nombreAgente/filestore/ se crea al iniciar por primera vez la instancia del agente. El procedimiento para proteger este directorio depende del sistema operativo en el que se ejecute el agente.

Solaris y Linux     Los permisos del directorio IMQ_VARHOME/instances/nombreAgente/filestore/ dependen de la opción "umask" del usuario que inició la instancia del agente. Por lo tanto, el permiso para iniciar una instancia del agente y leer sus archivos persistentes puede restringirse definiendo adecuadamente la opción "umask". Un administrador (superusuario) puede también proteger los datos persistentes definiendo los permisos del directorio IMQ_VARHOME/instances en 700.

Windows     Los permisos del directorio IMQ_VARHOME/instances/nombreAgente /filestore/ se pueden definir con los mecanismos ofrecidos por el sistema operativo Windows que esté utilizando. Normalmente, deberá abrir el diálogo de propiedades de este directorio.

Almacén persistente conectado

Un agente que utiliza una persistencia conectada escribe los datos persistentes en una base de datos compatible con JDBC.

Para una base de datos administrada por un servidor de base de datos (por ejemplo, una base de datos Oracle), es recomendable crear un nombre de usuario y una contraseña para acceder a las tablas de la base de datos de MQ (las tablas cuyo nombre empieza por "IMQ"). Si la base de datos no permite la protección de tablas individuales, cree una base de datos dedicada que sólo puedan utilizar los agentes de MQ. Póngase en contacto con el proveedor de la base de datos para obtener documentación sobre cómo crear un acceso de nombre de usuario/contraseña.

El nombre de usuario y la contraseña necesarios para abrir la conexión de la base de datos mediante un agente pueden ofrecerse en las propiedades de configuración del agente. Sin embargo, es más seguro ofrecerlos en las opciones de línea de comandos al iniciar el agente (consulte el apéndice A, "Setting Up Plugged-in Persistence", de la Guía del administrador de MQ).

En el caso de una base de datos incrustada a la que accede directamente el agente a través del controlador JDBC de la base de datos (por ejemplo, Cloudscape), la seguridad se ofrece normalmente definiendo los permisos de archivo (como se describe en la sección anterior "Almacén persistente integrado") en el directorio en el que se almacenarán los datos persistentes. Puede asegurarse de que la base de datos permite su lectura y escritura mediante el agente y la utilidad imqdbmgr, pero ambos los debe ejecutar el mismo usuario.

Configuración de memoria del agente

Cuando el agente está a punto de agotar el espacio del montón de JVM utilizado por los objetos Java, utiliza diversas técnicas, como el control de flujo y el intercambio de mensajes en la memoria libre. En circunstancias extremas, incluso llega a cerrar conexiones de cliente para liberar memoria y reducir el flujo de entrada de mensajes. Por lo tanto, es recomendable definir el espacio máximo del montón de JVM en un nivel lo bastante elevado como para evitar estas circunstancias.

Sin embargo, si el espacio máximo del montón de Java se define en un valor demasiado alto en relación con la memoria física del sistema, el agente puede seguir aumentando el espacio del montón de Java hasta que se agote la memoria de todo el sistema. Esto puede provocar una disminución del rendimiento, un bloqueo impredecible del agente y/o afectar al comportamiento de otras aplicaciones y servicios que se estén ejecutando en el sistema.

Este problema se puede evitar si se configura un límite razonable de tamaño de montón de Java mediante el argumento de línea de comandos -Xmx. Por lo general, es recomendable evaluar las huellas normales y máximas de memoria del sistema y configurar el tamaño de montón de Java para que sea lo suficientemente grande para obtener un buen rendimiento, pero no tanto como para que se produzcan problemas de memoria en el sistema.

Errores de memoria insuficiente del cliente

Si está ejecutando un cliente JMS que trabaja con mensajes grandes o con una gran cantidad de pequeños mensajes, se pueden producir errores de memoria OutOfMemoryError. Esto no significa que el tiempo de ejecución de cliente tenga una fuga de memoria, sino que no tiene suficiente memoria para copiar los mensajes de la red y entregarlos al cliente.

Para eliminar los errores OutofMemoryError, aumente el tamaño máximo de montón de Java. Para ello, transfiera la opción de línea de comandos adecuada al comando java o jre.

En Java2, utilice la opción -Xmx cuando ejecute la aplicación cliente. Por ejemplo:

Tenga en cuenta las siguientes limitaciones:


Cómo informar de los problemas

Para informar de un problema, envíe un mensaje de correo electrónico a imq-feedback@sun.com.

Si tiene un contrato de asistencia técnica y tiene problemas con MQ, póngase en contacto con el servicio de asistencia al cliente de Sun ONE utilizando uno de los siguientes mecanismos:

Para que podamos ayudarle de forma óptima en la resolución de problemas, tenga a mano la siguiente información cuando se ponga en contacto con la asistencia:


Para obtener más información

Además de la documentación de MQ, puede encontrar información adicional tal y como se indica a continuación.

Foros de discusión

Foro de software de Sun ONE

Puede encontrar un foro de Sun ONE MQ en la siguiente dirección:

Foro de tecnología de Java

Existe un foro de JMS en los foros de tecnología de Java que puede interesarle.

Sun valora sus comentarios

Sun tiene interés en mejorar su documentación y valora sus comentarios y sugerencias. Dirija sus comentarios a Sun a esta dirección de correo electrónico:

Incluya el número de pieza (817-3825-10) del documento en la línea de asunto y el título del documento (Message Queue 3.0.1 Notas de la versión) en el cuerpo del mensaje de correo electrónico.


Recursos adicionales de Sun

Puede encontrar información útil de Sun ONE en las siguientes direcciones de Internet:


Copyright © 2003 Sun Microsystems, Inc. Todos los derechos reservados.

Sun, Sun Microsystems, el logotipo de Sun, Solaris, Java y el logotipo de la taza de café de Java, JDBC y JDBC Compliant son marcas comerciales o marcas comerciales registradas de Sun Microsystems, Inc. en los Estados Unidos y en otros países. El uso de Sun ONE Message Queue está sujeto a los términos descritos en el acuerdo de licencia que lo acompaña.