![[z/OS]](../images/ngzos.gif)
Valores de fábrica de conexiones de beans controlados por mensajes ASF que utilizan WebSphere MQ como proveedor de mensajería en z/OS
Puede ajustar una variedad de valores de fábrica de conexiones para controlar la creación de conexiones y sesiones para beans controlados por mensajes (MDB).
Valores de fábrica de conexiones
Para conectar una aplicación o un servidor a un determinado gestor de colas con los parámetros de autenticación, tanto las aplicaciones como los puertos de escucha de mensajes se enlazan a las fábricas de conexiones. El servidor utiliza el mismo modelo administrativo para escuchar los mensajes que llegan para su entrega a los beans controlados por mensajes que la aplicación para aprovechar JMS, ya que los puertos de escucha de mensajes se enlazan a una fábrica de conexiones de cola (o fábrica de conexiones de tema) y a una cola (o un tema) correspondiente.
Para cada fábrica de conexiones, debe especificar valores de proveedor de mensajería (por ejemplo valores de gestor de colas), propiedades de agrupación de conexión y propiedades de agrupación de sesión. Los valores para la propiedad conexiones máximas de agrupación de conexiones y la propiedad conexiones máximas de agrupación de sesión de una fábrica de conexiones dependen de si está utilizando la fábrica de conexiones para un puerto de escucha y/o para una aplicación.
Valores de número máximo de conexiones de agrupación de conexiones
- El número de beans controlados por mensajes que se correlacionan con cualquier puerto de escucha correlacionado en esta fábrica de conexiones
- Es posible que un bean controlado por mensaje obtenga una conexión JMS al ejecutar
la lógica de aplicación en onMessage(), por ejemplo:
- Reenviando el mensaje a otro destino o enviando una respuesta.
- Actualizando un registro pero sin realizar llamadas relacionadas con JMS propias
En cualquiera de los casos, cuente 'uno' para este bean controlado por mensaje porque es la conexión utilizada por el puerto de escucha.
Si la lógica onMessage() de bean controlado por mensaje obtiene una conexión JMS, añada el número de hebras de trabajo de sirviente al número máximo de conexiones. De lo contrario, no añada el número máximo de conexiones para este componente de aplicación (MDB).
- El número máximo de conexiones
- En primer lugar busque el número máximo de conexiones obtenidas en una sola asignación
de aplicación (normalmente ‘1'), comprobando todas las aplicaciones que
utilizan esta fábrica de conexiones. A continuación, multiplique este número por
el número de hebras de trabajo en un sirviente para
calcular el número máximo de conexiones. Nota:
- Cuente sólo las hebras de trabajo para un sirviente porque cada sirviente tiene su propia fábrica de conexiones con agrupaciones de conexiones y sesiones.
- Incluya también otros componentes de aplicación no MDB que utilicen esta fábrica de conexiones para realizar llamadas JMS. Pero, independientemente del número de componentes de aplicación MDB o no MDB que utilicen esta fábrica de conexiones, si cada uno de ellos utiliza sólo una conexión JMS para cada asignación, el número máximo de conexiones es el número de hebras de trabajo de sirviente (no el número de aplicaciones multiplicado por el número de hebras de trabajo de sirviente).
Valores de número máximo de hebras de agrupación de sesiones
Para el puerto de escucha MDB que se procesa en todos los casos típicos, establezca la propiedad conexiones máximas de agrupación de sesiones en el número de hebras de trabajo de un solo sirviente.
Esto se debe a que las sesiones JMS no se comparten entre las asignaciones de aplicaciones o a que la infraestructura de puerto de escucha no las comparte, incluso para los clientes de la misma fábrica de conexiones, y también porque existe una agrupación de sesiones exclusiva para cada conexión JMS obtenida de la fábrica de conexiones (aunque los valores de propiedades de agrupación se especifican sólo una vez al nivel de fábrica de conexiones).
Imagine un caso en el que un puerto de escucha y una aplicación utilizan la misma fábrica de conexiones, aunque la aplicación tiene un requisito superior de la propiedad Número máximo de conexiones en el valor de agrupación de sesiones, pero aquí no es necesario continuar con la explicación.
¿Debo utilizar pocas o muchas fábricas de conexiones?
Es posible que prefiera mantener estos cálculos sencillos, por ejemplo, creando una fábrica de conexiones independiente para cada bean controlado por mensaje (en cuyo caso el valor de la propiedad de número máximo de conexiones de agrupación de conexiones puede establecerse en 1). O es posible que prefiera gestionar menos objetos administrativos de fábrica de conexiones.
Las conexiones y sesiones utilizadas para el proceso MDB no se pueden compartir (es decir, no se pueden utilizadas por más de un flujo a la vez). Por consiguiente, no deberá tratar la agrupación como una manera de utilizar menos fábricas de conexiones. En otras palabras, la adición de otra fábrica de conexión no evita la agrupación de conexiones que, de otro modo, podría explotar el proceso de puerto de escucha MDB.
Fábricas de conexiones - ejemplos
- Cada sirviente tiene 12 hebras de trabajo. (El número de sirvientes del servidor no es importante porque cada sirviente obtiene sus propias agrupaciones.)
- El puerto de escucha LP1 se correlaciona con la fábrica de conexiones CF1. El bean controlado por mensajes MDB1 se correlaciona con LP1. El código de aplicación onMessage() de MDB1 pone un nuevo mensaje en una cola de reenvío y, de este modo, MDB1 tiene una referencia de recurso que también se resuelve en CF1.
- Asimismo, en el mismo servidor, se define el puerto de escucha LP2 y se correlaciona con la fábrica de conexiones CF2. Los beans gestionados por mensajes MDB2A y MDB2B se definen en el mismo archivo ejb-jar y ambos se correlacionan con LP2 con selectores JMS complementarios. El código de onMessage() de MDB2A y MDB2B lleva a cabo cierto registro cronológico pero ninguno de los beans controlados por mensajes realiza ninguna llamada propia a la API de JMS API.
- Para una fábrica de conexiones CF1, cuente una conexión para MDB1. La aplicación MDB1 (que también utiliza la fábrica de conexiones CF1 para enviar el mensaje de reenvío) utiliza una conexión JMS, para la que se cuenta el número de hebras de trabajo (12) multiplicado por tres. El total del Número máximo de conexiones de agrupación de conexiones para la fábrica de conexiones CF1 es 13 = 12 + 1.
- Para la fábrica de conexiones CF2, cuente una para cada uno de MDB2A y MDB2B. No hay ninguna aplicación que utilice CF2, (sólo la infraestructura de puerto de escucha), de modo que establezca el número máximo de conexiones de agrupación de conexiones para la fábrica de conexiones CF2 en un valor igual a 2.
- Para cada una de las dos fábricas de conexiones, establezca el valor de Número máximo de conexiones de agrupación de sesiones en 12.
- De nuevo, cada sirviente tiene 12 hebras de trabajo. En este ejemplo, sólo desea utilizar una única fábrica de conexiones CF1.
- Cada uno de los dos puertos de escucha LP1 y LP2 se correlaciona con la fábrica de conexiones CF1. Los beans controlados por mensajes MDB1, MDB2 y MDB3 forman parte de tres archivos EAR de aplicaciones exclusivos. MDB1 se correlaciona con LP1, pero MDB2 y MDB3 se correlacionan cada uno con LP2.
- Hasta este momento ha contado que se necesitan tres conexiones para la fábrica de conexiones CF1. No obstante, también existe un componente de servlet que pone mensajes en una cola y utiliza la misma fábrica de conexiones CF1. De modo que para la fábrica de conexiones CF1, el valor de Máximo número de conexiones de agrupación de conexiones es 15 = 3 + 12.