Arquitecturas de Integración Mensajería

Slides:



Advertisements
Presentaciones similares
2010Ing. de Sistemas II Persistencia en EJB3 Pasos para crear entity beans.
Advertisements

JEE (EJB3) Configuración Ambiente de Desarrollo
JEE Introducción a Java Enterprise Edition (JEE) y el modelo Enterprise Java Beans (EJB)
Web Services.
Programación Orientada a Objeto 1
Red Social: “Un millón de Amigos”.
Curso de Java Capitulo 7: Continuación Poo Profesor:
Capa de Persistencia Daniel Fernández Lanvin.
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Common Object Request Broker Architecture
Servicios Web.
Introducción a Programación Concurrente
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
"java del lado del servidor" Servlet y JSP Java Server Pages.
Fundamentos de Ingeniería de Software
Unidad 6: EJB 3.0 David Rodríguez 1.
JSP Copyright ISIPE – Instituto de Servicios Informáticos para Empresas – Universidad Siglo 21 – Cualquier copia u otro uso debe ser autorizado expresamente.
Arquitectura CLARO-TECNOTREE CAPITULO 4: Excepciones
Capitulo 4 Excepciones.
Yéssica Forero Navarro Raúl Ernesto Gómez Mendoza Diana Carolina Mogollón Ruiz Luis Fernando Taboada Ernesto Fabián Vargas Mad rid.
RMI Remote Method Invocation
Java 2 Platform Enterprise Edition
RMI (Remote Method Invocation)
Aplicación del paradigma orientado a objetos
DIAGRAMAS DE SECUENCIA
Objetos Distribuidos – Aplicaciones RMI
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tecnologías para el desarrollo de aplicaciones Web
Administración de datos con MS-SQL Server y Visual Basic
Semana 5 Subprogramas..
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Ing. Karen Torrealba de Oblitas
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
DISEÑO DE SOFTWARE 1ª. Parte
SPRING MVC.
Correo electrónico Internet
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Conexión entre dos computadoras.  Datos: son hechos que describen sucesos y entidades. No tienen ninguna información. Puede significar un numero, una.
EJB 3.0 Message Driven Beans –Timers -AOP Tutor: Ing. Juan E. Talavera Horn 2010.
“Intercambio de datos mediante JMS” Algeciras, jueves 24 de octubre de 2013.
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Tutor: Ing. Juan E. Talavera Horn 2010 GWT – EJB Patrones de diseño e integración.
ESB Víctor Cabrera Cañizares.
J2EE – Java 2 Enterprise Edition
Sistemas Distribuidos
Enterprise Java Beans. EJBs Beans gestionados por un contenedor del servidor de aplicaciones para gestionar el acceso a recursos (bases de datos, colas.
The nesC Language: A Holistic Approach to Networked Embedded Systems Tomado de paper de: D. Gay, P. Levis, R. Behren, M. Welsh, E. Brewer, D. Culler.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Aplicaciones Web de Servidor
Contacta un Servlet o un JSP
- 1 - Sistema Embebidos: Propiedades de los Lenguajes y SDL Agustín J. González 1s07 Se ha tomado como base el material generado por Peter Marwedel de.
PROGRAMACION ORIENTADA A OBJETOS
MS OUTLOOK Farid Manzur. CORREO  Microsoft Outlook es un programa de computadora que ofrece varios servicios como la gestión de correo electrónico, una.
Enterprise JavaBeans Distributed Component Object Model
Rendimiento de la CPU y sus factores
Unidad 2 – Gestión de Procesos
Guadalupe Andrade Mociño.  Significa Modelo Vista Controlador  Es un patrón de diseño  Esta compuesto por tres grandes capas: modelo, vista y controlador.
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Notario electrónico Consejería de Justicia y Administración Pública Dirección General de Organización, Inspección y Calidad de los Servicios Antonio Pedro.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Middleware: modelos de comunicación Marisol García Valls Arquitecturas Distribuidas 2º Ingeniero de Telecomunicación (Telemática) Departamento de Ingeniería.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Definición: Es un estilo de programación, su objetivo primordial es la separación de la capa de presentación, capa de negocio y la capa de datos. ARQUITECTURA.
ENTERPRISE JAVA BEANS. ACCESO AL EJB EJB_HOME. Accesible mediante JNDI. Permite crear y destruir EJB. EJB_OBJECT Expone los métodos del negocio del EJB.
Transcripción de la presentación:

Arquitecturas de Integración Mensajería JEE Arquitecturas de Integración Mensajería 1

Qué es Mensajería? Forma de comunicación asincrónica entre componentes Usando mensajes Emisor y Receptor desacoplados Estos pueden desconocer la identidad del otro El Receptor puede no estar activo (funcionando) cuando se envía el mensaje Alternativa a las llamadas sincrónicas entre componentes (ej:RMI)‏ El Emisor envía un mensaje a un destino lógico No tiene que esperar una respuesta El Receptor toma el mensaje del destino o este se le reenvía cuando esté activo

Modelo de Comunicación usando Mensajería Receptor Mensaje Contenedor Emisor Destino Consume Envia Destino Emisor Receptor Mensaje Destino

Pros y Contras de usar Mensajería Llamadas asincrónicas Un componente puede llamar a otro sin tener que esperar por una respuesta inmediata el tiempo total de ejecución del Emisor no tiene que incluir el tiempo de ejecución del Receptor Mejor uso de recursos menos tiempo de ejecución por componente uso de memoria y servicios Reduce las dependencias entre componentes Un componente no tiene que conocer la identidad ni la ubicación fisica de otro para poder ejecutarlo Puedo cambiar la identidad, ubicación fisica e implementación interna de un componente sin necesidad de recompilar a sus clientes Permite que una aplicación siga funcionando aún con algun componente fuera de línea Los mensajes quedan en el destino y pueden ser procesados más tarde

Pros y Contras de usar Mensajería Más complicado de codificar que una llamada común sincrónica Más codigo para enviar un mensaje Más codigo para consumir un mensaje Más configuración configuración de Destinos autenticacion para enviar y recibir persistencia de mensajes Recibir respuestas asincrónicas es complicado mecanismo de “enviar y olvidar” (fire and forget)‏ No hay validación en tiempo de compilación del contenido del mensaje un mensaje puede contener cualquier tipo de objeto contrato explícito vs. contrato implícito entre lo que pone el Emisor en el mensaje y lo que saca el Receptor

Mensajería en J2EE: JMS Java Messaging System Permite desde código Java enviar y recibir mensajes Es un estándar, cada Contenedor lo implementa el código se puede migrar a otro Contenedor JMS define dos tipos de Destinos para comunicar: Punto a Punto usando Colas Point to Point, Queues Publicación y Suscripción usando Tópicos Publish and Suscribe, Topics

Mensajería Punto a Punto Los mensajes se envian a Colas El Receptor consume mensajes de la cola a medida que llegan Un mensaje es consumido sólo por un Receptor En una misma Cola pueden recibir varios Receptores El Emisor generalmente no sabe quien va a consumir el mensaje finalmente Receptor Mensaje Emisor m8 m1 Cola m7 m6 m5 m4 m3 Consume Envia m2 Receptor Emisor

Mensajería Publicación y Suscripción Los mensajes se publican en Tópicos Cada mensaje publicado se entrega a todos los Suscriptores de ese Tópico Para garantizar la entrega, un Tópico se puede configurar como durable Los Suscriptores pueden recibir mensajes que fueron publicados mientras estaban inactivos Suscriptor A Mensaje Publicación m1 m1 Recibe Tópico A Suscriptor A y B m1 Publica Mensaje m2 m2 Recibe Publicación Tópico B m2 Suscriptor B

Donde usar JMS Integración entre aplicaciones dispares Inter empresa o intra empresas No controlo ni conozco la implementación de la otra aplicación Aplicaciones de diferentes tecnologías (ej: Java/Cobol)‏ mientras que pueden enviar/recibir mensajes JMS Desacoplar aplicaciones existentes Para lograr indepencia una de la otra facilidad para reemplazar cualquiera de las dos el unico punto de acoplamiento es el nombre del destino Procesamiento en forma asincrónica Procesos o cálculos que toman mucho tiempo me interesa que se ejecute y se grabe un resultado, no capturar ese resultado desde el cliente en el momento de la llamada Eventos que quiero ejecutar y no necesito esperar el resultado envio de mails, alertas

Uso de JMS Connection Factory Destinos Punto de acceso de un cliente con el sistema de JMS Se usa para establecer una conexión/sesión (connection/session)‏ Existen en el Servidor/Contenedor y deben estar previamente configurados El cliente accede a estos vía lookup de JNDI Destinos Colas y Tópicos con nombres lógicos

Un Mensaje JMS Un mensaje JMS consta de 3 partes Cabecera: uso interno para identificación, ruteo, prioridad, etc. Propiedades adicionales: tabla de clave/valor para información complementaria Cuerpo (opcional): contenido a enviar El Cuerpo puede ser de diferentes tipos Todos sub-interfaces de javax.jms.Message TextMessage: un objeto String (ej: XML)‏ MapMessage: tabla de clave/valor ObjectMessage: una clase Java Serializable

Uso de JMS: Enviar un mensaje PaP desde un Cliente Java Hashtable props = new Hashtable(); props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099"); Context ctx = new InitialContext(props ); // buscar la Connection Factory en JNDI QueueConnectionFactory qfactory = (QueueConnectionFactory)ctx.lookup(”ConnectionFactory"); // buscar la Cola en JNDI Queue queue = (Queue) ctx.lookup(”queue/testQueue"); // crear la connection y la session a partir de la connection QueueConnection qCon = qfactory.createQueueConnection(); QueueSession qSession = qCon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // crear un producer para enviar mensajes usando la session QueueSender qSender = qSession.createSender(queue); // crear un mensaje de tipo text y setearle el contenido TextMessage message = qSession.createTextMessage(); message.setText(“Producto21,10"); // enviar el mensaje qSender.send(message); // TODO: recordar cerrar la session y la connection en un bloque “finally”

Uso de JMS: Consumir un mensaje desde un EJB (MDB)‏ MDB: Message Driven Bean Tipo de EJB una forma fácil y rápida para consumir mensajes JMS no pueden ser invocados por un cliente, solo consumen mensajes JMS Permite la ejecución asincrónica de Beans las llamadas normales entre EJBs son siempre sincrónicas el que hace la llamada bloquea mientras se ejecuta la invocación del método los MDBs son asincrónicos, se invocan solo mediante mensajes Los Clientes no tienen acceso directo a un MDB no tienen interfaces home ni remote no tienen estado (como los Stateless Session Beans)‏ el ciclo de vida es controlado completamente por el contenedor La invocación es a través de un solo método, no tipificado onMessage(Message m);

Uso de JMS: Consumir un mensaje desde un EJB (MDB)‏ MDB: Message Driven Bean El contenedor actúa como un consumidor de mensajes de una cola o tópico los clientes envían mensajes a un destino JMS en forma normal no tienen que saber que el que los consume es un MDB Cuando se recibe un mensaje, el contenedor ejecuta el método onMessage() de un MDB disponible existe un pool de MDBs igual que los Stateless Session Beans El Bean procesa dentro del código del método onMessage()‏ el procesamiento entonces es asincrónico y desacoplado del cliente dentro del código puede llamar a otros EJBs (Stateless, Statefull o Entity)‏ No hay valor de retorno Las excepciones no se propagan hacia el Cliente