|
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:
- Se han realizado ligeros cambios en la organización del documento y en la aclaración de los números de versión.
- Se ha añadido una sección nueva, Novedades de Message Queue 3.0.1 SP2.
- Se han añadido los errores 4879448, 4883126, 4888270 y 4883126 a Errores conocidos.
- Se han añadido los errores 4683129, 4735757, 4758424, 4758427, 4770212, 4770518, 4809079, 4821708, 4828860, 4835586 y 4879448 a Errores solucionados en las versiones Message Queue 3.0.1.
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 SP2MQ 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:
MQ 3.0.1 ofrece un nivel de rendimiento de entrega de mensajes dos veces superior al obtenido con MQ 3.0; esta mejora es especialmente importante en condiciones de carga excesiva. Esta mejora se ha conseguido mediante una serie de cambios en la organización de las propiedades de mensajes JMS para la transmisión por cable.
MQ 3.0.1 está certificado para Sun ONE Application Server 7.0 y se utiliza como su proveedor JMS nativo. MQ se ha integrado con Application Server, ofreciendo compatibilidad de mensajería JMS en un entorno de Application Server. Puede configurar el sistema para un servidor interno de mensajes MQ administrado con herramientas de Application Server o para un servidor externo de mensajes MQ que necesite herramientas de administración de MQ.
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
MQ ofrece ahora compatibilidad con el API del recurso XA JTA. Esto significa que la producción y consumo de mensajes puede formar parte de una transacción distribuida de mayor tamaño con la intervención de otros administradores de recursos, como los administradores de bases de datos (consulte el capítulo 1 de la Guía del desarrollador de MQ). Esta función también es compatible con las herramientas de administración de transacciones (consulte la tabla 6-12 de la Guía del administrador de MQ). La información y los ejemplos de programación aún no se encuentran disponibles en el producto MQ 3.0.1.
MQ admite ahora las funciones añadidas de la especificación JMS 1.1, que ofrece un enfoque simplificado de programación de cliente JMS frente a JMS 1.0.2. En concreto, el cliente JMS puede realizar mensajería "punto a punto" y de publicación/suscripción en la misma conexión y durante la misma sesión y, además, puede incluir colas y temas en la misma transacción.
En resumen, un desarrollador cliente JMS no necesita optar entre dominios de programación "punto a punto" y de publicación/suscripción de JMS 1.0.2 independientes, sino que puede elegir un enfoque de dominio de JMS 1.1 unificado y más sencillo. Ésta es la opción preferida; sin embargo, la especificación JMS 1.1 sigue admitiendo los dominios de programación JMS 1.0.2 independientes (De hecho, todas las aplicaciones de ejemplo incluidas en el producto MQ, así como todos los ejemplos de código proporcionados en la Guía del desarrollador de MQ utilizan los dominios de programación JMS 1.0.2 independientes).
Admite la creación y entrega de mensajes que cumplen la especificación SOAP (protocolo simple de acceso a objetos) mediante JAXM: la API de Java para mensajería XML. SOAP permite el intercambio de datos XML estructurados entre elementos del mismo nivel en un entorno distribuido. MQ admite también la entrega de mensajes SOAP mediante la mensajería JMS. Consulte la Guía del desarrollador de MQ para obtener más información.
MQ ofrece mayor flexibilidad a la hora de equilibrar el espacio en disco y el rendimiento cuando se utiliza el almacén persistente integrado (consulte la tabla 2-5 de la Guía del administrador de MQ). Además, los administradores tienen ahora la opción de eliminar sólo suscripciones duraderas o mensajes del almacén persistente al reiniciar un agente (consulte la opción reset en la tabla 5-2 de la Guía del administrador de MQ).
La estructura de directorios de MQ 3.0.1 instalada en Solaris se ha modificado para cumplir los estándares de sistema de archivos de la plataforma. Los archivos de MQ 3.0.1 ya no se instalan bajo un único directorio de instalación raíz, sino que se dispersan en ubicaciones estándar del sistema de archivos de Solaris.
Sólo en Enterprise Edition
MQ admite ahora mensajería segura a través de HTTP (consulte el apéndice B de la Guía del administrador de MQ). Este nuevo servicio de conexión ofrece cifrado de mensajes desde el productor de mensajes hasta el consumidor de mensajes (es decir, desde el cliente JMS, pasando por el servlet de canalización HTTPS, hasta el agente y viceversa).
Actualizaciones de la documentación de Message QueueLos 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 compatibilidadLas 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:
- Puede copiar los archivos config.properties de iMQ 2.0 a otra ubicación y, en la mayoría de los casos, puede consultar las preferencias de propiedades que contienen cuando configure los agentes de MQ 3.0.1.
- Todos los datos persistentes de iMQ 2.0 (mensajes, destinos o suscripciones duraderas) no se pueden volver a utilizar. En especial, deberá volver a crear los destinos de iMQ 2.0 en los agentes de MQ 3.0.1.
- Puede seguir utilizando el depósito de usuarios y los archivos de propiedades de control de acceso de iMQ 2.0 después de instalar MQ 3.0.1. El programa de instalación de MQ 3.0.1 no sobrescribe estos archivos. Sin embargo, deberá moverlos a la ubicación adecuada de MQ 3.0.1 (consulte el apéndice D de la Guía del administrador de MQ).
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:
- Puede utilizar el mismo almacén de objetos y los mismos objetos administrados que creó en iMQ 2.0. Sin embargo, es recomendable actualizar los objetos administrados después de instalar MQ 3.0.1. La consola de administración (imqadmin) y la utilidad de línea de comandos ObjectManager (imqobjmgr), convertirán los objetos administrados de iMQ 2.0 a objetos de MQ 3.0.1 al realizar la actualización.
- El tiempo de ejecución del cliente de MQ 3.0.1 buscará los objetos administrados de iMQ 2.0 y creará una instancia de ellos, convirtiéndolos en objetos administrados locales de MQ 3.0.1, pero esto no convertirá los objetos administrados de iMQ 2.0 del almacén de objetos en objetos administrados de MQ 3.0.1.
- Los clientes JMS (aplicaciones y/o componentes) que creen directamente una instancia de los objetos administrados (es decir, que dependan del proveedor JMS) deberán reescribirse para dar cabida a los nuevos nombres de atributo de objetos administrados (consulte el capítulo 4 y el apéndice A de la Guía del desarrollador de MQ para obtener información sobre los atributos de objetos administrados).
- Las secuencias de comandos que inicien clientes JMS y definan los valores de atributo de objetos administrados mediante las opciones de línea de comandos deberán reescribirse para dar cabida a los nuevos nombres de atributo de objetos administrados (consulte el capítulo 4 y el apéndice A de la Guía del desarrollador de MQ para obtener información sobre los atributos de objetos administrados).
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:
- Todas las secuencias de comandos que emplean utilidades de línea de comandos (imqbrokerd, imqcmd, imqobjmgr, etc.) deberán editarse para sustituir los antiguos comandos por los comandos que han recibido un nombre nuevo. Sobre todo, tenga en cuenta que el comando jmqbroker es ahora imqbrokerd.
- La consola de administración (imqadmin) le permite administrar varios agentes y/o almacenes de objetos de forma simultánea y guarda la lista de entidades administradas que aparecen en el panel de navegación ubicado en la parte izquierda de la pantalla. Por lo tanto, cada vez que inicie la consola, se volverá a mostrar la lista de entidades administradas. El nombre del directorio en el que se almacenan las preferencias de usuario de la consola de administración de iMQ 2.0 se ha cambiado para MQ 3.0.1. Si desea conservar las antiguas preferencias de la consola, al actualizar iMQ 2.0 a MQ 3.0.1, deberá cambiar el nombre del directorio en el que se almacenan los archivos brokerlist.properties y objstorelist.properties de $HOME/.jmq/admin a $HOME/.imq/admin, donde $HOME es el directorio particular del usuario de la consola.
Compatibilidad de cliente
Al actualizar iMQ 2.0 a MQ 3.0.1, debe tener en cuenta los siguientes puntos:
- Un agente de MQ 3.0.1 admitirá el tiempo de ejecución del cliente de iMQ 2.0 (sin las capacidades adicionales de MQ 3.0.1), pero un agente de iMQ 2.0 no admitirá el tiempo de ejecución del cliente de MQ 3.0.1.
- Los clientes JMS integrados en JDK 1.2, 1.3 o 1.4 pueden interactuar con un agente que ejecute JRE 1.4. Sin embargo, los clientes que utilizan una conexión segura (basada en SSL) con un agente necesitarán bibliotecas JSSE y JNDI adicionales si no están integradas aún en JDK 1.4 (que ya incluye estas bibliotecas).
- La API de JMS 1.1 (admitida por MQ 3.0.1) clarifica el comportamiento del método Message.acknowledge(), utilizado para confirmar el consumo de mensajes en las sesiones CLIENT_ACKNOWLEDGE. Es posible que necesite modificar los clientes JMS existentes.
El método Message.acknowledge() confirma todos los mensajes consumidos en la sesión al llamar a este método. Este cambio en el comportamiento de la API de 1.0.2 (admitido por iMQ 2.0) se describe en el siguiente ejemplo: suponga que un cliente consume cuatro mensajes de una cola en la misma sesión (por ejemplo, en el orden A, B, C y D) y todos se han consumido antes de que el cliente llame al método de confirmación en el mensaje C.
La confirmación se realiza independientemente del orden en el que se consumen los mensajes, siempre que se consuman en la misma sesión. Dicho de otro modo, el mensaje en el que se llama al método acknowledge() ya no determina qué mensajes se confirman.
En iMQ 2.0, se debía definir automáticamente ClientID en la dirección IP local del cliente si se había creado una suscripción duradera sin definir explícitamente un valor de ClientID. En MQ 3.0.1, se devuelve una excepción si se crea una suscripción duradera sin definir explícitamente un valor de ClientID. Dicho de otro modo, siempre se debe definir un valor de ClientID, en código de cliente o mediante un atributo del objeto de fábrica de conexión, cuando se utilicen suscripciones duraderas o consumidores de conexión duradera.
En iMQ 2.0, si un literal de cadena contenía caracteres con varios bytes, se debía usar una secuencia de doble escape de caracteres Unicode (por ejemplo, selector = "property = '\\u033e\\u033f'"). En MQ 3.0.1, se puede utilizar la representación normal de caracteres Unicode (por ejemplo, selector = "property = '\u033e\u033f'").
Limitaciones conocidasLas 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
- Las plataformas Windows limitan el número de conexiones que se pueden iniciar simultáneamente por TCP/IP con un agente, en función del valor máximo del tamaño del registro de seguridad. El registro de seguridad es el búfer para las conexiones de la pila TCP; el número de inicios de conexiones TCP simultáneas no puede superar el tamaño de este registro. Por ejemplo, Windows 2000 Professional limita el registro de seguridad a 5 y Windows 2000 Server, a 200.
- No puede editar un archivo de configuración de la instancia del agente sin haber iniciado la instancia del agente al menos una vez. Esto se debe a que el archivo config.properties no existe hasta que se inicia por primera vez la instancia del agente. Si desea configurar un agente para que utilice la persistencia de conexión o para definir otras propiedades de configuración, inicie el agente una vez (con el nombre de instancia que se debe utilizar para crear el agente) para crear el archivo config.properties:
Sólo en Enterprise Edition
- El modelo de conjunto de subprocesos compartidos del agente no funciona en las plataformas Windows (debido a un error en J2SE 1.4.0). Se espera una solución para J2SE 1.4.1, pero aún no ha sido probada.
- 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 conecta agentes mediante el argumento de línea de comandos imqbrokerd -cluster, asegúrese de incluir todos los agentes del clúster.
- Si no se utiliza un agente maestro en un clúster, la información persistente almacenada por un agente que se ha añadido al clúster no se distribuirá a los demás agentes del clúster.
- El servicio de conexión mediante SSL sólo admite actualmente certificados de servidor firmados automáticamente, es decir, en el modo de host de confianza. La propiedad de configuración de conexión imqSSLIsHostTrusted está definida en verdadera de forma predeterminada.
- Cuando un cliente JMS con transporte HTTP finaliza repentinamente (por ejemplo, mediante Ctrl-C), el agente espera aproximadamente un minuto antes de liberar la conexión de cliente y todos los recursos asociados.
Si se inicia otra instancia de cliente durante ese período de un minuto y si ésta intenta utilizar el mismo ClientID, la misma suscripción duradera o la misma cola, recibirá una excepción "Recurso en conflicto". 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.
Errores conocidosEsta 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.
Errores solucionados en las versiones Message Queue 3.0.1A 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:
Funcionalidad marcada como opcional en JMSLa 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:
Notas técnicasEsta 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:
- Ejecute el agente como raíz.
- Escriba un programa "setuid" para aumentar el valor "ulimit" antes de ejecutar el agente (los programas de este tipo plantean un gran riesgo para la seguridad; se recomienda encarecidamente que no los utilice).
- Ajuste el parámetro rlim_fd_max del archivo /etc/system y reinicie el sistema.
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:
- El límite máximo del conjunto de asignación de memoria (tamaño de montón) de la VM depende del sistema operativo y de la versión de JDK. Compruebe la documentación de JDK para conocer las restricciones.
- El tamaño del conjunto de asignación de memoria de la VM debe ser inferior o igual a la cantidad de memoria virtual disponible en el sistema.
Cómo informar de los problemasPara 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:
- Sitio Web del servicio de asistencia técnica en línea de Sun ONE: http://www.sun.com/service/sunone/software/index.html
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:
- Descripción del problema, incluida la situación en la que éste se produce y la forma en que afecta al funcionamiento
- El tipo de máquina, versión del sistema operativo y versión del producto, incluida cualquier revisión del producto y otro software que pudiera influir en el problema
- Pasos detallados de los métodos que haya usado para reproducir el problema
- Cualquier registro de errores o volcados del núcleo
Para obtener más informaciónAdemá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 SunPuede encontrar información útil de Sun ONE en las siguientes direcciones de Internet:
- Documentación para Sun ONE Message Queue
http://docs.sun.com/coll/S1_MessageQueue_301- Sun ONE Información del producto Message Queue
http://sun.com/software/message_queue- Documentación de Sun ONE
http://docs.sun.com/prod/sunone- Servicios profesionales de Sun ONE
http://www.sun.com/service/sunps/sunone- Servicio y productos de software de Sun ONE
http://www.sun.com/software- Servicios de asistencia al cliente de software de Sun ONE
http://www.sun.com/service/sunone/software- Base de datos de soluciones y asistencia al cliente de Sun ONE
http://www.sun.com/service/support/software- Servicios de formación y asistencia de Sun
http://www.sun.com/supportraining- Servicios profesionales y de consultoría de Sun ONE
http://www.sun.com/service/sunps/sunone- Información de desarrolladores de Sun ONE
http://sunonedev.sun.com- Servicios de asistencia de desarrolladores de Sun
http://www.sun.com/developers/support- Formación de software de Sun ONE
http://www.sun.com/software/training- Hojas de datos de software de Sun
http://wwws.sun.com/software
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.