Transacciones. JMS y JavaEE
|
|
- Enrique Bustamante Núñez
- hace 6 años
- Vistas:
Transcripción
1 Índice 1 Transacciones Locales Ejemplos Transacciones Distribuidas Conexiones Perdidas Ejemplo Uso de JMS en Aplicaciones JavaEE Anotaciones en Componentes JavaEE EJBs de Sesión para Producir y Recibir Mensajes Síncronos Ejemplo de un EJB que Envía Mensajes Ejemplo de Aplicación Web que Envía Mensajes...10
2 1. Transacciones Locales En un cliente JMS se pueden usar transacciones locales para agrupar bien envíos o bien recepciones en operaciones atómicas. Ya desde el principio hemos visto que una sesión se puede crear como transaccional o no solamente con poner respectivamente a true o false el primer argumento del método Connection.createSession() y hasta ahora solamente hemos trabajado con sesiones no transaccionales. De modo, que mediante los siguientes fragmentos de código crearíamos una sesión transaccional: Session session = connection.createsession(true, 0); QueueSession queuesession = queueconnection.createqueuesession(true, 0); TopicSession topicsession = topicconnection.createtopicsession(true, 0); Buenas Prácticas Es una buena práctica poner a 0 el segundo argumento del método (tipo de acuse de recibo), ya que al tratarse de una sesión transaccional, será ignorado. Recordar que el valor 0 es similar a Session.AUTO_ACKNOWLEDGE session = connection.createsession(true, 0); JMS no ofrece ningún método de inicio de transacción de forma explícita, de modo que nada más crear la sesión transaccional, la transacción ha comenzado. Además, JMS aporta los métodos Session.commit() y Session.rollback() que pueden usarse en un cliente, y que supondrán el final de la transacción. El commit significa que todos los mensajes producidos son enviados y se envía acuse de recibo de todos los consumidos. Sin embargo, el rollback en JMS implica que se destruyen todos los mensajes enviados y se recuperan todos los mensajes consumidos y re-enviados aunque hayan expirado. Toda transacción forma parte de una sesión transaccional. Tan pronto como se llama a commit o rollback, finaliza una transacción y comienza otra (esto se conoce como transaction chaining). Cerrar una sesión transaccional implica un rollback automático de la transacción, incluyendo los envíos y recepciones pendientes. Finalmente, los métodos anteriores no pueden usarse en EJBs ya que, como veremos en el módulo correspondiente, se usan transacciones distribuidas. Un aspecto muy importante es que podemos combinar varios envíos y recepciones en una transacción local (no distribuída), pero en ese caso debemos tener en cuenta el orden de las operaciones. Si una transacción consiste solo en sends, solo en receives o la recepción se realiza antes de enviar no hay problema, pero si intentamos usar un mecanismo request/reply entonces siempre que enviemos un mensaje y esperemos recibirlo dentro de la misma transacción el programa se colgará, ya que el envío no se hace efectivo hasta que no se hace un commit. 2
3 // No hacer esto outmsg.setjmsreplyto(replyqueue); producer.send(outqueue, outmsg); consumer = session.createconsumer(replyqueue); inmsg = consumer.receive(); session.commit(); Esto se debe a que al enviar un mensaje dentro de una transacción, realmente no se envía hasta que no se realiza el commit de la transacción, por lo tanto, la transacción no puede contener ninguna recepción que dependa de un mensaje enviado previamente. Es más, la producción y el consumo de un mensaje no puede ser parte de la misma transacción ya que el intermediario es JMS, el cual interviene entre la producción y la consumición del mensaje. En ese caso debemos hacer una transacción desde el productor al recurso JMS y otra desde éste al consumidor. Analicemos el siguiente gráfico: JMS como intermediario El envío de uno o más mensajes a uno o más destinos por parte del cliente 1 puede formar una transacción (producción transaccional), ya que conforma un conjunto de interacciones con el proveedor JMS mediante una única sesión. Del mismo modo, la recepción de uno o más mensajes (consumición transaccional) desde uno o más destinos por parte del cliente 2 también forma una única transacción, y que se realiza desde una sola sesión. Pero como ambos clientes no tienen interacciones directas y están utilizando dos sesiones diferentes, no se puede producir una transacción entre ellos. En Resumen El hecho de producir y/o consumir mensajes dentro de una sesión puede ser transaccional, pero el hecho de producir y consumir un mensaje específico entre diferentes sesiones no puede ser transaccional Ejemplos Como hemos comentado, los métodos de commit y rollback de una transacción local están asociados con la sesión. Podemos combinar operaciones con colas y tópicos dentro de una única transacción siempre y cuando utilicemos la misma sesión. Por ejemplo, podemos utilizar la misma sesión para recibir un mensaje desde una cola y enviar un mensaje a un tópico dentro de la misma transacción: public void recibirsincronopublicarcommit() throws JMSException { Connection connection = null; 3
4 Session session = null; QueueReceiver receiver = null; TopicPublisher publisher = null; connection = connectionfactory.createconnection(); connection.start(); // Creamos una sesion transaccional session = connection.createsession(true, 0); // Creamos el consumidor a partir de una cola receiver = (QueueReceiver) session.createconsumer(queue); // Creamos el productor a partir de un topico publisher = (TopicPublisher) session.createproducer(topic); // Consumimos y luego publicamos TextMessage message = (TextMessage) receiver.receive(); System.out.println("Recibido mensaje [" + message.gettext() + "]"); publisher.publish(message); session.commit(); catch (JMSException jmse) { System.err.println("Rollback por " + jmse.getmessage()); session.rollback(); catch (Exception e) { System.err.println("Rollback por " + e.getmessage()); session.rollback(); finally { publisher.close(); receiver.close(); session.close(); connection.close(); Además, podemos pasar la sesión de un cliente al constructor de un listener de mensajes y utilizarla para crear un productor de mensajes. De este modo, podemos utilizar la misma sesión para recibir y enviar mensajes dentro de un consumidor de mensajes asíncrono. public void recibirasincronopublicarcommit() throws JMSException { Connection connection = null; Session session = null; QueueReceiver receiver = null; TextListener listener = null; connection = connectionfactory.createconnection(); // Creamos una sesion transaccional session = connection.createsession(true, 0); // Creamos el consumidor a partir de una cola receiver = (QueueReceiver) session.createconsumer(queue); listener = new TextListener(session); receiver.setmessagelistener(listener); // Llamamos a start() para empezar a consumir connection.start(); 4
5 // Sacamos el mensaje por consola System.out.println("Fin asincrono"); catch (JMSException jmse) { System.err.println("Rollback por " + jmse.getmessage()); session.rollback(); catch (Exception e) { System.err.println("Rollback por " + e.getmessage()); session.rollback(); finally { receiver.close(); session.close(); connection.close(); De modo que el listener puede hacer commit o rollback conforme necesite: private class TextListener implements MessageListener { private Session session; public TextListener(Session session) { this.session = session; public void onmessage(message message) { TopicPublisher publisher = null; TextMessage msg = null; // Consumimos y luego publicamos msg = (TextMessage) message; System.out.println("Recibido mensaje asincrono [" + msg.gettext() + "]"); publisher = (TopicPublisher) session.createproducer(topic); publisher.publish(message); session.commit(); catch (JMSException e) { System.err.println("Rollback en onmessage(): " + e.tostring()); session.rollback(); catch (JMSException ex) { 2. Transacciones Distribuidas Los sistemas distribuidos en ocasiones utilizan un proceso de two-phase commit (2PC) que permite a múltiples recursos distribuidos participar en una transacción. Esto implica el uso de un gestor de transacciones que se encarga de cordinar la preparación, commit o 5
6 rollback de cada recurso que participa en la transacción. Lo más común es que estos recursos sean BBDD, pero también pueden ser proveedores de mensajes. El proceso de 2PC se realiza bajo el interfaz XA (extended Architecture), y en JavaEE lo implementa JTA (Java Transaction API) y los interfaces XA (javax.transaction y javax.transaction.xa). Cualquier recurso que implementa estos interfaces puede unirse a una transacción global mediante un gestor de transacciones que soporte estos interfaces. Los proveedor JMS que implementan los interfaces XA puede participar en transacciones distribuidas. La especificación JMS ofrece versiones XA de los siguientes objetos:xaconnectionfactory, XAQueueConnection, XAQueueConnectionFactory, XAQueueSession, XASession, XATopicConnectionFactory, XATopicConnection y XATopicSession. Cada uno de estos objetos trabajar de modo similar a los no-xa. El gestor de transacciones de un servidor de aplicaciones utiliza los interfaces XA directamente, pero el cliente JMS solo ve las versiones no-transaccionales. Así pues, los interfaces XA no estan pensados para que lo utilicen los desarrolladores, sino que los provedores JMS son los que deben implementarlos. En resumen, no debemos preocuparnos en usar estos interfaces, sólo de si nuestro servidor de aplicaciones soporta 2PC, y éste ya se encargará de incluir nuestra operación dentro de una transacción global. 3. Conexiones Perdidas Cuando lo conexión de red entre el cliente y el servidor se pierde, el proveedor JMS intentará restablecer la conexión. Si el proveedor no consiguiese la reconexión, debe notificar al cliente de la situación, mediante el lanzamiento de una excepción. El problema viene cuando tenemos un consumidor asíncrono, el cual no realiza ninguna llamada de envío o recepción. Este consumidor no esta invocando ningún método JMS, sólo está escuchando mensajes, por lo que puede no llegar a detectar la pérdida de la conexión. JMS ofrece la interfaz ExceptionListener para capturar todas las conexiones perdidas y notificar a los clientes de dicha situación. Este listener se asocia a la conexión. La definción del listener es la siguiente: public interface ExceptionListener { void onexception(jmsexception exception); El proveedor JMS se responsabilizará de llamar a este método de todos los listeners registrados cuando no pueda realizar la reconexión automática. Por lo tanto, el consumidor asíncrono podrá implementar este interfaz para poder actuar en esta situación, e intentar la reconexión de modo manual. 6
7 3.1. Ejemplo Por ejemplo, podremos modificar nuestro consumidor para que en el caso de perder la conexión, realice una reconexión manual: public class ConsumidorAsincrono implements ExceptionListener = "jms/connectionfactory") private static ConnectionFactory = "jms/queue") private static Queue queue; private Connection connection = null; private void establececonexion() { connection = connectionfactory.createconnection(); connection.setexceptionlistener(this); catch (JMSException ex) { public void onexception(jmsexception exception) { System.err.println("Ha ocurrido un error con la conexion"); exception.printstacktrace(system.err); this.establececonexion(); public void recibemensajeasincronocola() throws JMSException { Session session = null; MessageConsumer consumer = null; TextoListener listener = null; this.establececonexion(); session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); consumer = session.createconsumer(queue); listener = new TextoListener(); consumer.setmessagelistener(listener); connection.start(); finally { consumer.close(); session.close(); connection.close(); public static void main(string[] args) throws Exception { ConsumidorAsincrono p = new ConsumidorAsincrono(); p.recibemensajeasincronocola(); 7
8 4. Uso de JMS en Aplicaciones JavaEE En esta sección veremos las diferentes maneras de usar JMS desde una aplicación JavaEE, y sus diferencias respecto a una aplicación cliente. Importante Los componentes web y EJBs no deben crear más de una sesión activa (sin cerrar) por conexión 4.1. Anotaciones en Componentes JavaEE Cuando utilizamos la en una aplicación cliente, normalmente la declaramos como un recurso private static ConnectionFactory private static Queue queue; Sin embargo, cuando utilizamos estas anotaciones en un ejb de sesión, un MDB o un componente web, no declararemos el recurso private ConnectionFactory private Topic topic; Si lo declaramos estáticos, obtendremos errores de tiempo de ejecución EJBs de Sesión para Producir y Recibir Mensajes Síncronos Una aplicación JavaEE que produce mensajes o que los consume de manera síncrona puede utilizar un EJB de sesión para realizar estas tareas. Pero como la consumición dentro de un bloque síncrono reduce los recursos del servidor, no es una buena práctica realizar un receive dentro de un EJB. Por ello, se suele utilizar un receive con timeout, o un MDB para recibir los mensajes de una manera asíncrona. El uso de JMS dentro de una aplicación JavaEE es muy similar al realizado en una aplicación cliente, salvando las diferencias en cuanto a la gestión de los recursos y las transacciones Gestión de Recursos 8
9 Los recursos JMS son la conexión y la sesión. Normalmente, es importante liberar los recursos JMS cuando dejan de utilizarse. Algunas prácticas útiles son: Si queremos mantener un recurso únicamente durante la vida de un método de negocio, es una buena idea cerrar el recurso en el bloque finally dentro del método. Si queremos mantener un recurso durante la vida de una instancia EJB, es conveniente utilizar un método anotado para crear el recurso y otro método anotado para cerrarlo. Si utilizásemos un EJB de sesión con estado, para mantener el recurso JMS en un estado cacheado, deberíamos cerrarlo y poner su valor a null mediante un método anotado y volver a crearlo en un método anotado Transacciones En vez de usar transacciones locales, utilizamos transacciones CMT para métodos de los ejbs que realizan envíos o recepciones de mensajes, permitiendo que el contenedor EJB gestione la demarcación de las transacciones. Ya que las transacciones CMT son las que se usan por defecto, no tenemos que utilizar ninguna anotación para especificarlas. También podemos utilizar transacciones BMT y el interfaz javax.transaction.usertransaction para demarcar las transacciones de un modo programativo, pero solo debemos hacerlo así si nuestros requisitos son muy complejos y dominamos muy bien los conceptos sobre transacciones. Normalmente, CMT produce el comportamiento más eficiente y correcto Ejemplo de un EJB que Envía Mensajes A continuación mostramos un sencillo EJB que realiza la misma función que el productor de mensajes creado en la primera sesión. El interfaz remoto es el siguiente: package es.ua.jtech.jms; // public interface ProductorSLSBRemote { void enviamensajejms(string mensaje) throws JMSException; Y en cuanto al bean, el código es muy similar al visto como aplicación cliente: package es.ua.jtech.jms; // public class ProductorSLSBBean implements ProductorSLSBRemote { 9
10 @Resource(name = "jms/connectionfactory") private ConnectionFactory = "jms/queue") private Queue queue; { public void enviamensajejms(string mensaje) throws JMSException Connection connection = null; Session session = null; connection = connectionfactory.createconnection(); connection.start(); session = connection.createsession(true, 0); TextMessage tm = session.createtextmessage(mensaje); MessageProducer messageproducer = session.createproducer(queue); messageproducer.send(tm); finally { if (session!= null) { session.close(); if (connection!= null) { connection.close(); Tal como hemos comentado antes, destacar como las instancias de los recursos administrados ya no son estáticas, así como el cierre de los recursos dentro del bloque finally Ejemplo de Aplicación Web que Envía Mensajes A continuación tenemos un Servlet que envía un mensaje, igual que el EJB anterior: package es.ua.jtech.jms; // imports public class ProductorJMSServlet extends HttpServlet = "jms/connectionfactory") private ConnectionFactory = "jms/queue") private Queue protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); 10
11 String mensaje = "Este es un mensaje enviado desde un Servlet"; this.enviamensajejms(mensaje); out.println("enviado mensaje: " + mensaje); catch (JMSException jmse) { jmse.printstacktrace(system.err); finally { out.close(); private void enviamensajejms(string mensaje) throws JMSException { Connection connection = null; Session session = null; connection = connectionfactory.createconnection(); connection.start(); session = connection.createsession(false, Session.AUTO_ACKNOWLEDGE); TextMessage tm = session.createtextmessage(mensaje); MessageProducer messageproducer = session.createproducer(queue); messageproducer.send(tm); finally { if (session!= null) { session.close(); if (connection!= null) { connection.close(); Como podéis observar, el método de envío de mensajes es exactamente igual (sólo hemos cambiado el método de public a private). Si lo que queremos es que el Servlet envíe el mensaje a través del EJB anterior, podríamos hacer esto: package es.ua.jtech.jms; // imports public class ProductorEJBServlet extends HttpServlet private ProductorSLSBRemote protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { 11
12 response.setcontenttype("text/html;charset=utf-8"); PrintWriter out = response.getwriter(); String mensaje = "Este es un mensaje enviado desde un Servlet que llama a un EJB"; productorslsbbean.enviamensajejms(mensaje); out.println("enviado mensaje: " + mensaje); catch (JMSException jmse) { jmse.printstacktrace(system.err); finally { out.close(); En la siguiente sesión repasaremos el ciclo de vida de los EJBs, y veremos como podríamos mejorar el EJB para que tanto la creación como el cierre de la conexiones se realizase únicamente en un sitio, y no una vez por cada método de negocio que tengamos. 12
13 13
Sesión 1: Introducción a JMS
Sesión 1: Introducción a JMS 2010-2011 Depto. Ciencia de la Computación e IA Puntos a Tratar Un Poco de Historia Dominios de Mensajería JMS Arquitectura Modelo de Programación Recursos JMS en Glassfish
Introducción a JMS (Java Message Service)
Introducción a JMS (Java Message Service) Índice 1 Un Poco de Historia... 2 1.1 Mensajería...3 1.2 MOM...4 2 Dominios de Mensajería...5 2.1 Punto a Punto... 5 2.2 Publicación/Subscripción...6 3 Java Message
Servicios de Mensajes con JMS
Índice 1 2 3 4 5 Introducción a JMS (Java Message Service)...3 1.1 Un Poco de Historia... 3 1.2 Dominios de Mensajería... 6 1.3 Java Message Service... 9 1.4 Recursos JMS en Glassfish...20 1.5 Una Aplicación
1. Posicionarse en la vista Services y seleccionar el ítem Servers. En el menú contextual del Mouse seleccionar la opción Add Server
Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación
Taller de Sistemas de Información 2
Taller de Sistemas de Información 2 Mensajeria 6 de Setiembre de 2012 Instituto de Computación Facultad de Ingeniería Universidad de la República de Uruguay Messaging La comunicación que hemos visto hasta
PRÁCTICA 3: COMPONENTES. Javier Sánchez Pérez Arquitectura del Software Grado en Informática
PRÁCTICA 3: COMPONENTES Javier Sánchez Pérez Arquitectura del Software Grado en Informática Contenidos Java EE Enterprise Java Beans Stateless Session Beans Stateful Session Beans Singleton Session Beans
Consumo de ActiveMQ en Pre
Interoperabilidad de los servicios telemáticos de la Administración Pública de la CAC Página 1 de 10 Consumo de ActiveMQ en Pre Documento de consumo Rev. Fecha Descripción 1 21/03/13 Primera versión de
Desarrollo de Sistemas Software Basados en Servicios y Componentes
Desarrollo de Sistemas Software Basados en Servicios y Componentes Bloque Docente SERVICIOS WEB Parte 2 Portada Escuela Superior de Ingeniería (ESI) Universidad de Almería Índice Visualización WSDL (servicios
MOM LSUB. 3 de abril de 2013 GSYC
MOM LSUB GSYC 3 de abril de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Sistemas de colas de mensajes
Tema 9. Paradigmas Avanzados de computación distribuida 1. Sistemas de colas de mensajes 2. Agentes móviles 3. Servicios de red 4. Espacios de objetos Sistemas de colas de mensajes Tema 9 Paradigmas Avanzados
1. Sistemas de colas de mensajes 2. Agentes móviles 3. Servicios de red 4. Espacios de objetos
Tema 9. Paradigmas Avanzados de computación distribuida 1. Sistemas de colas de mensajes 2. Agentes móviles 3. Servicios de red 4. Espacios de objetos Tema 9 Paradigmas Avanzados de Computación Distribuida
Ejercicios de tratamiento de errores
Índice 1 Captura de excepciones (0.5 puntos)...2 2 Lanzamiento de excepciones (0.5 puntos)... 2 3 Excepciones como tipos genéricos en la aplicación filmotecas(0.5 puntos)...4 4 Excepciones anidadas en
Message Oriented Middleware: Java JMS
Message Oriented Middleware: Java JMS LSUB GSYC 29 de abril de 2015 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento
Quickstart-Webapps-Spring
Alumna: Keren Monge Cid Materia: Web Application Development Maestro: Alejandro S. Álvarez Cifuentes Grupo: 3CM2 3er Departamental Quickstart-Webapps-Spring Objetivo Desarrollar una aplicación web utilizando
PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
SERVLETS. Aplicaciones Distribuidas
SERVLETS Aplicaciones Distribuidas Contenido Definición. Framework Servlet. Ciclo de vida. Ejemplo. Procesamiento Petición. Generación de la Respuesta. Sesiones. Cookies. Colaboración entre servlets. Otros
Diseño Y Aplicaciones de Sistemas Distribuidos. Servlets. Joan Vila
Diseño Y Aplicaciones de Sistemas Distribuidos Servlets Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Qué es un servlet? Son una forma de
Requisitos. Universidad ORT Arquitectura de Software
Requisitos Java Development Kit (JDK) 1.5 o superior NetBeans IDE 6.5 o superior JBoss Application Server 4.2.x o 5.x.x Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK 1
Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores
Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables
Técnico Superior en Programación con Java SE Standard Edition
Código: M087_04 Técnico Superior en Programación con Java SE Standard Edition Modalidad: Distancia Duración: 120 horas Objetivos: Este pack de materiales formativos proporcionará al alumnado la base que
Curso: Programación con JAVA SE Estándar Edition.
Curso: Programación con JAVA SE Estándar Edition. Código: 1062 Familia Profesional: Programación. Acreditación: Formación reconocida a través de vías no formales Modalidad: Distancia Duración: 150 horas
Introducción a JMS. Sistemas de Mensajería & JMS
Introducción a JMS Sistemas de Mensajería & JMS Caracterización de JMS JMS es un API para trabajar con Sistemas de Mensajería JMS no especifica HA Capabilities Load Balancing / Fault Tolerance Error /
Ejercicio 4. EJB Sesión - Sistema SGA. Java EE. Ejercicio 4. EJB Sesión Sistema SGA. Curso de Java EE
Java EE Ejercicio 4 EJB Sesión Sistema SGA Objetivo del Ejercicio El objetivo del ejercicio es agregar un EJB de Sesión a nuestro proyecto SGA (Sistema de Gestión de Alumnos), el cual desarrollaremos a
Universidad ORT - Arquitectura de Software. Requisitos
Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación
Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.
Sockets La biblioteca estándar de clases de Java nos proporciona todo lo que necesitamos para utilizar sockets en nuestras aplicaciones en el paquete java.net, por lo que tendremos que añadir la siguiente
Ejercicios de Introducción a JMS
Índice 1 Dominio JMS... 2 2 Primeros Ejemplos (1p)...2 3 Ejemplos con Clases Específicas (1p)...2 4 Semáforo Hipotecario (2p)...2 4.1 jms-banco...3 4.2 jms-semaforo...3 4.3 Enviando y parseando la información...5
Sesión 2: Mensajes. Robustez en JMS Subscripciones Duraderas
Sesión 2: Mensajes. Robustez en JMS Subscripciones Duraderas 2010-2011 Depto. Ciencia de la Computación e IA Puntos a tratar Mensaje Cabecera Propiedades Cuerpo / Tipos de Mensaje Browser de Mensajes JMS
Guía del Curso Analista Programador Java: Business Apps Expert
Guía del Curso Analista Programador Java: Business Apps Expert Modalidad de realización del curso: Número de Horas: Titulación: Online 600 Horas Diploma acreditativo con las horas del curso OBJETIVOS UML
Ingeniería del Software Separación entre Presentación y Lógica del Negocio
Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas
Cada vez que la misma computadora solicita una página pg con un browser, junto con la solicitud el browser envía la cookie al servidor.
Cookies 1 Que son las cookies? Una cookie es una variable almacenada por el servidor en la computadora del cliente. Cada vez que la misma computadora solicita una página pg con un browser, junto con la
Tema 4. Excepciones en Java
Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer
Arquitectura de Aplicaciones Empresariales en Java
Arquitectura de Aplicaciones Empresariales en Java Relator: Juan Claudio Navarro jcnavarro@optimisa.cl, jnavarro@dcc.uchile.cl, juancla.navarro@gmail.com Agenda Bloque 1 (18:30 20:00) Java EE La capa de
Laboratorio: Creación de un Message Driven Bean
Laboratorio: Creación de un Message Driven Bean Objetivos El objetivo de este laboratorio es enseñar a los alumnos a crear una aplicación J2EE que utilice Message Driven Beans con Rational Application
HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá
Construcciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina
Componentes Distribuidos EJBs Ing. Cesar Julio Bustacara Medina Introducción La Clase del Bean Contiene la lógica del Enterprise Bean. Es una clase Java pública, que implementa los métodos de negocios
Concurso: Cuánto sabes de JAVA?
Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos
Enterprise JavaBeans 3. Aplicaciones Distribuidas
Enterprise JavaBeans 3 Aplicaciones Distribuidas Contenido Introducción Motivación Características básicas Servicios integrados en EJB 3 Ejemplo Hola Mundo Inyección de dependencia Tipos de EJB 3 Conclusiones
II Curso Online JAVA-J2EE
II Curso Online JAVA-J2EE TEMA 6 Desarrollo de componentes EJB Autor: PCYTA / Centro de Excelencia de Software Libre de Castilla-La Mancha Versión: 1.0 Fecha: Revisado 26-03-2008 23:33 Licencia: CC-by-sa
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI Héctor Pérez 2 MobileTracker: Especificación El computador de la torre de control ejecuta el servicio Follower que registra los
COMPONENTES Y CONTENEDORES. Ingeniería de Software II
COMPONENTES Y CONTENEDORES Ingeniería de Software II Motivación Los componentes son paquetes de software o módulos que encapsulan un conjunto de funciones similares. Estos componentes viven dentro de un
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
INTRODUCCION A LA PROGRAMACION EN JAVA
Departament d Arquitectura de Computadors INTRODUCCION A LA PROGRAMACION EN JAVA Índice Paso de parámetros en tiempo de ejecución Métodos static Atributos static Try-catch-finally Throws/throw 2 Paso de
Modelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Uso de excepciones en Java
Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que
Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java
Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.
SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:
Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs
Oracle University Contact Us: 001-855-844-3881 Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs Duration: 4 Days What you will learn Esta capacitación Java EE 6: Desarrollo de componentes
Especificaciones del driver JDBC
BASE 100, S.A. www.base100.com Índice 1. INTRODUCCIÓN... 3 1.1 SINTAXIS DE LA URL... 3 1.2 REGISTRO DEL DRIVER... 3 2. ESTABLECIMIENTO DE LA CONEXIÓN... 4 2.1 OBSERVACIONES... 4 3. EJEMPLO... 5 Pág. 2
Conexión de Mysql con NetBeans
Alumna: Keren Monge Cid Materia: Web Application Development Maestro: Alejandro S. Álvarez Cifuentes Grupo: 3CM2 2do Departamental Conexión de Mysql con NetBeans Objetivo Realizar un programa que realice
Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.
Federico Peinado
Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es
Desarrollo de Software con
Desarrollo de Software con Antonio J. Vélez Q. Universidad del Valle Sede Palmira Contenido Definición de Enterprise Bean Cuando usar Enterprise Beans Tipos de Enterprise Beans Enterprise Bean Con componentes
Experto Universitario Java Enterprise Spring
Spring Sesión 6: Acceso remoto. Pruebas Indice Spring para acceso remoto Spring vs. EJB Comparación de los protocolos disponibles Acceso remoto con HttpInvoker Pruebas Acceso remoto. Pruebas 2012-2013
Comunicación entre procesos: sockets udp. Jorge Iván Meza Martínez
Comunicación entre procesos: sockets udp Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/31 Contenidos Conceptos
Manejo de Excepciones
Manejo de Excepciones Una excepción en java es un evento que ocurre durante la ejecución de un programa que interrumpe el flujo normal de las instrucciones. Una excepción puede ser causada por fallas de
Sistemas de Operación 3
Sistemas de Operación 3 Los EJBs proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJBs es dotar al programador de un modelo que le permita abstraerse
UD 4 GESTIÓN DE ERRORES. Pedro J. Ponce de León. Versión
UD 4 GESTIÓN DE ERRORES Pedro J. Ponce de León Versión 20111005 Gestión Errores Objetivos Saber utilizar las sentencias de control de excepciones para observar, indicar y manejar excepciones, respectivamente.
Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés
Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés
INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)
APRENDERAPROGRAMAR.COM INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
Pasarela de pagos de la Administración Pública Vasca V2. Integración con Sistemas BackEnd de Administraciones
Pasarela de pagos de la Administración Pública Vasca V2 Integración con Sistemas BackEnd de Administraciones 06 de Febrero de 2007 Indice 1 Introducción...1 2 Módulos de la Pasarela de Pagos...2 3 Proceso
1. Cuántas sentencias hay en la secuencia principal del siguiente programa?
1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.
Práctica 4: Java Remote Method Invocation (RMI)
Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado
Universidad Tecnológica Nacional FRC DIPLOMATURA SUPERIOR en Desarrollo bajo Plataforma Java EE
1. PROPUESTA CURRICULAR 1.a) OBJETIVOS Universidad Tecnológica Nacional FRC DIPLOMATURA SUPERIOR en Desarrollo bajo Plataforma Java EE El curso "Desarrollo bajo Plataforma Java EE" ofrece a los estudiantes
Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets
Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc..
FRAMEWORK 2 Recepción de SMS
FRAMEWORK 2 Versión 1.1 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título Documento de Referencia Responsable FW2_MUS_Recepcion_SMS Área de Integración y Arquitectura de Aplicaciones
Programación en Java. Programación en OO
Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,
Presentación. Programación I. Programación Orientada a Objetos. :: Prof. Yeniffer Peña
Presentación Programación Orientada a Objetos :: Prof. Yeniffer Peña Utiliza las excepciones java. Una excepción es una condición anormal que se produce en una porción de código durante su ejecución. Es
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador
Java RMI. Sistemas Distribuidos Rodrigo Santamaría
+ Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en
FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005
Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos
TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos III. Otros entornos de objetos distribuidos 1. Problemas de CORBA 2. Java Enterprise Edition 1. EJB 2. Servidor de aplicaciones
J2EE Java 2 Enterprise Edition
J2EE Java 2 Enterprise Edition Es el framework oficial de Java para la construcción de aplicaciones empresariales Es una tecnología basada en componentes Ofrece un modelo para el desarrollo de aplicaciones
INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO
INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO TEMA: REPORTE DEL PROYECTO SEGUNDO DEPARTAMENTAL ALUMNOS: RAMIREZ DOMINGUEZ LUIS MARIO MENDEZ RODRIGUEZ KAREN PINEDA REYES GABRIELA IVONNE GRUPO:
USANDO SERVLETS EN UN SERVIDOR WEB RESIN
USANDO SERVLETS EN UN SERVIDOR WEB RESIN Servidor Web Resin Resin es un servidor web que permite no solo despachar un página web, sino aplicaciones web construidos bajo la arquitectura J2EE, así como el
Java EE Enterprise Beans (EJB)
Java EE Enterprise Beans (EJB) Aplicaciones Web/Sistemas Web Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Material bajo
Programación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!
Profesor: José Luis Montoya Restrepo
Profesor: José Luis Montoya Restrepo Caso de Estudio: Escalando el modelo de autenticación síncrono a través de la mensajería. Arquitectura común para aplicaciones Web Autenticación síncrona Escalar horizontalmente
Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011
Depto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación Fundamentos de Programación 15 de diciembre de 2011 Ejercicio 1 (2 puntos) SOLUCIONES class TarjetaDeCredito
Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos
Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad
Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Práctica 2: Java Remote Method Invocation (RMI)
Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es
en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina
Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera
MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar
MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un
Ejemplos de Servlet y JSP Web Application Development
Ejemplos de Servlet y JSP Web Application Development HERNÁNDEZ CRUZ DULCE 13/09/2011 INTRODUCCIÓN Servlets Los Servlets son módulos que extienden los servidores orientados a petición-respuesta, como los
Tema 5 Corrección y Robustez Excepciones en Java
Tema 5 Corrección y Robustez Excepciones en Java Parte II: Excepciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Introducción Excepciones comprobadas Caso de estudio Tratamiento
JAVA RMI (REMOTE METHOD INVOCATION)
JAVA RMI (REMOTE METHOD INVOCATION) RMI RMI (Remote Method Invocation) Mecanismo RPC de Mecanismo mediante el cual los procesos cliente y servidor en una aplicación distribuida se comunican Una aplicación
FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4
Trabajo Práctico Nº 4 Ejercicios Teóricos 1. Indique si las siguientes afirmaciones son verdaderas o falsas a. La programación orientada a objetos hace uso de clases y envío de mensajes entre objetos..
Introducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Derechos de Acceso: COMPOSICION
CLASES Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearan a partir de la misma. class nombre_clase cuerpo de la clase Derechos de Acceso:
Programación concurrente
Programación concurrente Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Programación concurrente
Especialista TIC en Programación con JAVA 8 SE Standard Edition (Online)
Especialista TIC en Programación con JAVA 8 SE Standard Edition (Online) TITULACIÓN DE FORMACIÓN CONTINUA BONIFICADA EXPEDIDA POR EL INSTITUTO EUROPEO DE ESTUDIOS EMPRESARIALES Especialista TIC en Programación
Curso de gráficos con Java y OpenFlashChart para aplicaciones web. Manual del alumno
Curso de gráficos con Java y OpenFlashChart para aplicaciones web Manual del alumno Ing. Cedric Simon Tel: 2268 0974 Cel: 8888 2387 Email: c e d r i c @ s o l u c i o n j a v a. c o m Web: www.solucionjava.com
... Instituto Politécnico Nacional Ingeniería en Sistemas Computacionales. Práctica 14
. Instituto Politécnico Nacional Ingeniería en Sistemas Computacionales.......... Práctica 14 Alumno: _Torres Fernández Yuliana Teresa Boleta: 2009630293 Grupo: 3CM2 Profesor: Cifuentes Alvarez Alejandro
LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)
APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
Curso Java Web (JSP's/Servlets)
Curso Java Web (JSP's/Servlets) JSP's ("Java Server Pages") Composición Un JSP ("Java Server Page") es uno de los componentes más básicos empleados para aplicaciones de Servidor en Java. Su composición
Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP. 1. Introducción a JSP... 2
Tabla de contenidos Práctica 4 PROGRAMACIÓN WEB CON SERVLETS Y JSP 1. Introducción a JSP... 2 1.1. Que es Java Server Page (JSP)?...2 1.2. Diferencias entre JSP y Servlet...2 1.3. Características de JSP...2