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.
|