Directriz: Identificación de beans controlados por mensajes
Esta directriz trata la forma en que identificar y modelar beans controlados por mensajes que se necesitan para una aplicación J2EE.
Relaciones
Elementos relacionados
Descripción principal

Introducción

Esta directriz se centra en identificar los beans controlados por mensajes. En la sección Directriz de producto de trabajo: beans controlados por mensajes encontrará directrices adicionales sobre los beans controlados por mensajes. En la sección Directriz de producto de trabajo: Enterprise JavaBeans encontrará ayuda general sobre los EJB.

Algunas de las características de los beans controlados por mensajes son:

  • No tienen estado.
  • No devuelven valores o excepciones a los clientes.
  • No tienen interfaces, puesto que los clientes no acceden directamente a los beans controlados por mensajes, sino que lo hacen de forma indirecta enviando mensajes al destino (o punto final) al que el bean dé servicio. Hay un método de escucha ("onMessage()" en el caso de beans controlados por mensajes JMS) que maneja de forma genérica todos los mensajes. Esto significa que en tiempo de ejecución hay que realizar una comprobación de tipo, mediante la operación "instanceOf()", para determinar el tipo de mensaje recibido.

Los mensajes se pueden enviar al contenedor desde cualquier lugar, incluidos otros EJB, componentes web y clientes de aplicación. El contenedor invoca a EJB controlados por mensajes, tal como necesite, para manejar los sucesos de mensajes que se reciben. Los EJB controlados por mensajes pueden acceder a otros EJB de entidad o sesión, o a la capa EIS directamente para procesar mensajes.

Identificación de beans controlados por mensajes

Los beans controlados por mensajes proporcionan una manera de manejar mensajes de forma asíncrona. Sólo es posible invocar de forma síncrona a los beans de entidad y de sesión. Los beans controlados por mensajes se identifican como parte de la definición de concurrencia del conjunto del sistema. Consulte la sección Directriz: concurrencia para conocer directrices generales sobre la concurrencia, como por ejemplo para diseñar patrones para desacoplar el código del que llama y el código del que recibe la llamada. Normalmente los beans controlados por mensajes se identifican como parte de la Tarea: descripción de la arquitectura de tiempo de ejecución como un medio para proporcionar concurrencia dentro del contenedor EJB. Como tal, en general no son identificados directamente de las clases de análisis, sino de que son identificados para resolver problemas específicos de diseño, como los de rendimiento y acoplamiento.

Algunas razones por las que utilizar beans controlados por mensajes son:

  • Separar elementos de áreas diferentes de software: se puede enviar un mensaje a una cola sin que haya acoplamiento con el consumidor de esos mensajes. También puede dar soporte a varios remitentes y destinatarios.
  • Incrementar el rendimiento permitiendo que el remitente del mensaje siga su proceso en lugar de quedarse bloqueado en una llamada asíncrona (como ocurre en una invocación de un bean de sesión o de entidad).
  • Incrementar la fiabilidad permitiendo que el remitente del mensaje continúe su función incluso si los consumidores del mensaje está fuera de línea.
  • El middleware orientado a mensajes (MOM) que hay detrás de la interfaz de mensajería puede ofrecer otras ventajas: como la entrega de mensajes garantizada.
  • Existe un elemento de diseño (como un sistema tradicional) que utiliza la mensajería para comunicarse.

Modelado de beans controlados por mensajes

Consulte la sección Directriz: identificación de Enterprise JavaBeans (EJB) para obtener ayuda general sobre el modelado de EJB. Observe, sin embargo, que los beans controlados por mensajes normalmente se modelan como parte de la Vista de proceso. Consulte la sección Directriz: descripción de la arquitectura de tiempo de ejecución para aplicaciones J2EE para obtener ayuda específica sobre el modelado de beans controlados por mensajes en la Vista de proceso.

Devolución de resultados a los remitentes de mensajes

Los beans controlados por mensajes no pueden enviar directamente respuestas a los remitentes de los mensajes.

Una estrategia habitual para enviar una respuesta es introducir otro destino o punto final para las respuestas. Consulte [ROM02] para obtener más detalles sobre esta estrategia.