SlideShare una empresa de Scribd logo
Java Avanzado Emilio Avilés Ávila http://www.techmi.es
Workshop  (25 horas) Workshop Java avanzado para empresas y profesionales
Temario Introducción al desarrollo Web Servlets JSP Javabeans EJB Struts Resumen y conclusiones
Tema 5 EJB: Enterprise Java Beans
Objetivos Introducción al desarrollo Web Servlets JSP Javabeans EJB Struts Resumen y conclusiones   ¿Qué son los EJBs? Beneficios y diferencias con los javaBeans Cambios en la J2EE5.0 EJB 2.1 vs 3.0 Tipos EJBs Session Stateless Stateful MDB (MessageDriven) Entity Bean JavaPersistence Api Prácticas y Ejemplos
5 – EJB ¿Qué es un EJB? Es un  componente  del la parte  servidor  que encapsula la  lógica de negocio  de una aplicación.  La  Lógica de negocio  es el código que cumplimenta el  propósito  de la aplicación. Ejemplo : una aplicación de control de inventario El  enterprise bean  podría implementar la lógica de negocio de métodos que se llamas en  compruebaNivelInventario  o por ejemplo  solicitaProducto .  Invocando a estos métodos, los clientes remotos podrían acceder a los servicios de inventario proporcionados por la aplicación.
5 – EJB Beneficios EJBs Simplifican el desarrollo de aplicaciones grandes y/o distribuidas El contenedor proporciona servicios a nivel de sistema a los EJBs (Seguridad y Transacciones) Permite dedicarnos sólo a problemas de negocio  Abstrae al programador de la capa de cliente  Puede dedicarse exclusivamente del diseño. Permite construir clientes ligeros (móviles) Al ser portables pueden ser incluidos en otra aplicación con beans ya existentes.
5 – EJB ¿Cuándo usar EJBs? Cuando la aplicación sea escalable Si el número de usuarios es elevado Distribución en varias máquinas (cluster, HA) La localización es transparente al cliente Cuando deba haber integridad de datos Los EJBs soportan transacciones Mecanismo para soportar acceso concurrente a objetos Cuando hay distintos tipos clientes Con pocas líneas de código, cualquier cliente remoto puede localizar EJBs Clientes móviles, TV, Tablet PC, etc.
5 – EJB Diferencia entre JavaBeans y EJB Paquetes JavaBeans:  paquetes java definibles. EJB:  Paquete  javax.ejb. Ámbito de interacción JavaBeans : Interactúan entre ellos SÓLOs dentro del mismo espacio de nombres . EJB :  Interactúan  con otros componentes que pueden pertenecer a otro espacio. Capa JavaBeans :  Capa cliente y Negocio . EJB:  Solo capa de negocio y acceso a BDD.
5 – EJB Diferencia entre JavaBeans y EJB (II) JavaBeans:  Es una interfaz de Sun para construir aplicaciones reutilizables.  Permite construir bloques que puedan usarse de forma separada o en conjunción con otros. EJB:  Sólo se utilizan en la capa de negocio (Bussiness Tier) Pueden servir de comunicación entre componentes del servidor y una Base de Datos (EIS)
5 – EJB Componentes de Negocio Es la lógica que resuelve o cumple las necesidades de un negocio en particular Banca La venta Financiación Se maneja o encapsulan mediante  Enterprise Java Bean (EJB) Representa el modelo de comunicarnos con lo que conocemos como modelo de datos
5 – EJB Modelo de Datos Capa de sistema de información Empresarial En J2EE EIS Maneja el software del sistema de información: ERP’s, BDD, CRMs, BackEnds. Las aplicaciones J2EE, y en particular la lógica de negocio a través de sus componentes,  requieren de acceso  a estos datos.
5 – EJB Ejemplo de una arquitectura J2EE
5 – EJB Donde estamos: Foto!!
3 – JSP: Java Server Pages Ejercicio práctico Mi primer Enterprise Application Crear un proyecto J2EE en NetBeans … .  Suerte
5 – EJB ¿Qué trae nuevo J2EE 5.0 respecto a EJB? Los descriptores de despliegue XML son ahora  opcionales . (No más  ejb-jar.xml ) En lugar de ello, empleamos  Annotations  (anotaciones, también llamados  metadatos ) directamente en un POJO, dentro del código fuente en el que estemos trabajando. POJO: Plain Old Java Object Se reconocen porque empiezan por @
5 – EJB Anotaciones @ Las anotaciones se usan para incrustar datos en un programa que de otra forma tendrían que ser proporcionados en un fichero por separado. JEE5 proporciona anotaciones para estas tareas: Definir y usar Web Services Desarrollar aplicaciones EJB Mapeo de clases Java a XML Mapeo de clases Java a Bases de Datos Mapeo de métodos a operaciones Especificación de dependencias externas Especificación de información de despliegue, incluyendo  seguridad .
5 – EJB Anotaciones (Metadatos) para EJB @Stateless, @Stateful.  Para indicar si es un componente bean de sesión  stateless  o  stateful @PostConstruct, @PreDestroy, @PostActivate, @PrePassivate.  Indicación un método como de  event callback  * @EJB.  Usado en un cliente JEE para referenciar instancias de Enterprise Beans. @PersistenceUnit.  Se usa para expresar una dependencia de un E ntityManagerFactory . @PersistenceContext.  Se usa para expresar una dependencia de un  EntityManager . @WebServiceRef.  Se usa en un cliente para referenciar  web services . @Resource.  Para todos los demás recursos no cubiertos por @EJB o @WebServiceRef @Timeout.  Especifica un método  timeout  sobre un componente que use servicios de temporizador ( container-managed timer services) . @MessageDriven.  Especifica un bean  message-driven . Un bean  message-driven  es un consumidor de mensajes que puede ser llamado por su contenedor. @TransactionAttribute.  Aplica un atributo  transaction  a todos los métodos de un interfaz de negocio o a métodos de negocio individuales de un bean @TransactionManagement.  Declara si un bean tendrá transacciones  container-managed  o  bean-managed  (controladas por contenedor o por bean). @RolesAllowed, @PermitAll, and @DenyAll.  Permisos de métodos. @RolesReferenced.  Declara roles de seguridad referenciados en el código del bean @RunAs.  Usa un rol de seguridad especificado para ejecutar un método.
5 – EJB Características EJB 2.1 Muy potente, pero complejo de usar Demasiadas clases e interfaces. Java Naming an Directory Interface (JNDI) para búsquedas. Interfaces Javax.ejb Descriptores de despliegue Modelo de programación complicado y pesado Incremento de costes
5 – EJB Desarrollo simplificado con EJB 3.0 La tecnología EJB es ahora más sencilla de aprender y usar. Menor número de clases e interfaces Inyección de dependencias ( dependency injection ) Búsquedas simples No se requieren interfaces de contenedor No se requieren descriptores de despliegue Persistencia simplificada Mapeo objeto/relacional Incremento de la productividad del programador.
5 – EJB Compatibilidad EJB 2.1 - EJB 3.0 Todas las aplicaciones existentes en la actualidad siguen funcionando en este modelo. Facilidad de integración entre componentes y aplicaciones preexistentes. Permite que se actualicen o reemplacen componentes (usando APIS EJB 3.0) sin afectar a los clientes existentes. La migración incremental facilita la adopción de la tecnología EJB 3.0
5 – EJB Tácticas de EJB 3.0 El contenedor realiza más cantidad de trabajo tedioso, y el desarrollador menos, de modo que puede centrarse en tareas más importantes. El Bean especifica lo que necesita usando metadatos, de modo que ya no tenemos que escribir interfaces de contenedor innecesarios. El contenedor actúa de intermediario para proporcionar los servicios que sean requeridos.
5 – EJB Tipos de EJB Beans de sesión:   Representa una conversación temporal con un cliente.  Cuando el cliente finaliza su ejecución, el bean y sus datos desaparecen. Beans de entidad o Java Persistence API Representa datos persistentes almacenados en una fila de una tabla/relación de una base de datos.  Si el cliente termina o si se apaga el servidor, los servicios subyacentes se aseguran de grabar el bean. La nueva  Java Persistence API  ha simplificado la persistencia de los entity beans.  Los nuevos  entity objects  son POJOs que proporcionan una vista orientada a objetos de los datos almacenados en una base de datos. Beans dirigidos por mensajes:   Combina las características de un bean de sesión y un  Permite que un componente de negocio reciba asincrónicamente mensajes JMS.
5 – EJB Stateless Session Bean No dispone de variables de instancia. Los datos no son compartidos por los métodos. Realizan trabajos o métodos independientes. El resultado de las operaciones no son dependientes de ningún estado.
5 – EJB Ejemplo  stateless session bean Sesión bean de operaciones con clientes Consultar, guardar o borrar clientes Necesita  siempre   de una interfaz En caso de no crearla, la crea el contenedor
5 – EJB Interfaz Local o Remota @Local: Si el bean está siendo usado por una clase se está ejecutando en la misma JVM @ Remote:  Distinta máquina virtual (JVM)
3 – JSP: Java Server Pages Ejercicio práctico Mi primer Session Stateless Bean Crear con NetBeans SessionBean Cliente public void grabarCliente(Cliente cliente ); public Cliente getCliente ( Long id ); public Collection getAllClientes(); public boolean deleteCliente ( Long id ); … .  Suerte
5 – EJB Interfaz Local o Remota Servlet y bean session Una vez ensamblado y desplegado El contenedor es el interface del bean con funcionalidades de bajo nivel del sistema.
3 – JSP: Java Server Pages Ejercicio práctico Servlet -> StateLess Crear con NetBeans el proyecto que viene como ejemplo Sample -> ServletStateLess … .  Suerte
5 – EJB Ejemplo Completo  stateless session  Bean @PersistenceContext.  Se usa para expresar una dependencia de un  EntityManager
5 – EJB WebServices con  stateless session bean Generar una respuesta basado en información del cliente. HelloServiceBean    sayHello(String hola) El endPoint debería tener Anotación  jws.WebService  o  jws.WebServiceProviderla La clase con anotación @Webservice Los  Bussiness Method  deben ser  públicos  y NO deben ser  static  ni  final. Los  Bussiness Method  deben anotar  jws.WebMethod La clase que lo implemente NO  final  ni  abstract  ni métodos  finalize() El endpoint debe anotar @stateless
5 – EJB stateful session bean Al contrario que los anteriores, tienen estado Pueden almacenar variables de instancia Los datos son compartidos por los métodos. El resultado de las operaciones son dependientes del estado cuando éstas son llamadas.
5 – EJB Ejemplo  stateful session bean Carro de la compra on-line El usuario va agregando productos a la cesta. En el momento de la compra, tendrá que realizar el registro de sus datos. Dirección de entrega Tarjeta de crédito Estos datos se almacenan en variables que conforman el estado del bean Necesita también  siempre   de una interfaz Sino, la crea el contenedor
5 – EJB Ejemplo Carro de la compra on-line Interfaz ( remote o local) Implementación =  stateful session bean
3 – JSP: Java Server Pages Ejercicio práctico Mi primer Session Statefull Bean Crear con NetBeans SessionBean Carrito Interfaz Local y remota Metodos public void añadirProducto(String producto); public void eliminarProducto(String producto); public Colection listarCompra(); … .  Suerte
5 – EJB Message driven bean Este tipo de beans (MDB) permite a las aplicaciones procesar mensajes de forma asíncrona a través del servicio JMS JMS funciona a través de colas de mensajes Los clientes envían sus peticiones a las colas Estas colas son controladas por los  Message Driven Beans Los MDB procesan los mensajes que hay en ellas y ejecutan ciertos servicios dependiendo del mensaje procesado. Este tipo de beans se aproximan más a la forma conceptual de los  Stateless Session Bean  en el sentido que son  beans  que no deben almacenar estado alguno.
5 – EJB ¿Cómo funcionan las colas de los MDB? Cuando un mensaje llega a la cola el contenedor hace una llamada al método  onMessage  del  Message Driven Bean  Este método debería invocar a métodos de otros sesión bean o realizar la lógica de negocio de debiera ejecutar  Es más conveniente no tener aquí lógica de negocio,  Sino hacer invocaciones a métodos de otras clases que sí se encarguen de realizar lógica de negocio. Para declarar un MDB  @MessageDriven  a una clase que implemente la interface  MessageListener Indicar el nombre de la cola del contenedor ( la cuál es accesible vía JNDI) que va a controlar el MDB
5 – EJB Ejemplo Aplicación cliente JMS. La aplicación cliente envía el msg a la cola. La cola tuvo que ser creada ( Admin Console). El JMS  provider  (en nuestro caso el  Application Server ) entrega el  msg  al  MDB
5 – EJB Ejemplo Aplicación cliente JMS – Código Injectamos los recursos  Conexión  y las  colas Creamos la  conexión ,  session  y  productor . Enviamos mensajes con el cliente
3 – JSP: Java Server Pages Ejercicio práctico Mi primer MDB Crear con NetBeans MessageDrivenBean SMTPBroker Crear la cola Queue Verla en la consola del Servidor de aplicaciones OnMessage Llamada (a un session Bean) … .  Suerte
5 – EJB Dependecy Injection Patrón según el cual las dependencias de un objeto se proporcionan automáticamente por una entidad externa a ese objeto No es necesario que ese objeto pida el recurso explícitamente. Para solicitar la inyección de un recurso, el componente usa la anotación  @Resource .  En algunos recursos especializados, también las anotaciones  @EJB  y  @WebServiceRef. Patrón Hollywood: “No me llames, ya te llamo yo”
5 – EJB Dependecy Injection (II) La idea es tener objetos separados para que la implementación solo dependa del Interface  El  Assambler  proporciona los campos de la implementación al  MovieLister
5 – EJB Dependecy Injection
5 – EJB Ciclo de Vida de los  Session  EJB   Stateful Session EJB Stateless Session EJB
5 – EJB Ciclo de Vida de los  MessageDriven  EJB   Message Driven Beans
5 – EJB Java Persistence API Antiguos EJB de entidad ( Entity EJB). Un entidad es un objeto de persistencia. Normalmente representa un registro de BDD. Trata lo siguiente: Como los datos relacionales se mapean a Objetos Java persistentes. Como se almacenan en la BDD relacional. Conseguir existencia de un estado continuado incluso después de finalizada la aplicación. Estandariza el mapeo objeto relacional.
5 – EJB Características  Java API persistence  (I) Las entidades son POJOs:  Al contrario que los componentes EJB que usan  container-managed persistence  (CMP).  Los objetos entidad  ya no son componentes Mapeo estandarizado objeto/relacional Mapear información objeto/relacional  annotations o XML Coge la filosofía ORM de Hibernate Soporte de herencia y polimorfismo:  Obviamente al ser los objetos de entidad POJOs.
5 – EJB Características  Java API persistence  (II) Soporte a consultas nativas ( native query ):  Además del  Java Persistence Query Language. Consultas en el lenguaje nativo de la BD subyacente. Named Query Es una consulta estática expresada en metadatos.  Consulta  Java Persistence query  o  native query. Lo cual mejora la reutilización de consultas. Reglas de empaquetado simplificadas:  Al se POJO pueden ser empaquetadas en cualquier lugar de un aplicación.
5 – EJB Características  Java API persistence  (II) Soporte para bloqueo optimista ( optimist locking ):  Es una técnica que evita el bloqueo por razones de rendimiento pero teniendo en consideración que la transacción puede fallar debido a colisión con otro usuario. Entidades separadas ( Detached Entities ):  Como las entidades son POJOs, pueden ser serializadas ( implements Serializable ) y enviadas a través de la red a distintas direcciones. Ya no son necesarios los  Data Transfer Objects  (DTOs). EntityManager API :  En operaciones CRUD ( Create Read Update Delete ) que impliquen entidades. Conectividad de proveedores de persistencia de terceros: Es un interfaz entre un contenedor Java EE y un proveedor de persistencia. (JDBC, etc.)
5 – EJB Características  Java API persistence  (III) La API propiamente dicha  javax.persistence Objetos principales EntityManager : permite crear, encontrar por clave primera, y eliminar objetos persistentes, y crea objetos Query Query : permite lanzar consultas en EJB-QL Internamente las implementaciones usan el  API de JDBC  (transparentemente al programador) EJB-QL  (EJB Query Language) Lenguaje de consultas de búsqueda y borrados & actualizaciones en masa. La implementación traduce al SQL de la BD que se esté usando
5 – EJB Entity beans  Son Clase ( POJO ) Representa una tabla de una base de datos Cada instancia de esta clase representa un registro de la tabla Mapeo propiedades de una clase / campos de una tabla. Especificar las relaciones que tienen las clases  uno a uno, uno a muchos, muchos a uno y muchos a muchos Todo Entity Bean debe tener una clave primaria  Identifica a ese registro de forma única dentro de la tabla. Configuraciones a través de anotaciones JPA (Java Persistent API ) gestiona todos los aspectos relativos a la persistencia
5 – EJB Ejemplo  Entity bean:  Team Establecer anotación @entity Establecer @id para la clave primaria Anotaciones de relación (@OneToMany)
5 – EJB Ejemplo  Entity bean:  Team
5 – EJB Ejercicio práctico Crear la Entidad Player, que al igual que la entidad anterior va a tener: Una anotación @Entity Otra anotación @Id Una anotación @ManyToOne para establecer una relación bidireccional entre las dos entidades
3 – JSP: Java Server Pages Ejercicio práctico Mi primer Entity Bean con NetBeans Crear un Entity Bean:  Team private Long id; protected String name; protected Date fechaCreacion; protected Collection players; /* @OneToMany */ Crear un Entity Bean:  Player private Long id; protected String name; protected Team team; /* @ManyToOne ]/ … .  Suerte
5 – EJB Ejemplo Empleados/Departamentos
5 – EJB Ejemplo uso  entity bean A través del  stateless bean  HRMS
3 – JSP: Java Server Pages Ejercicio práctico Relacionar SessionBean con Entity Beans Crear un método de Negocio en Cliente public Player crearPlayer(String name) Buscar con el EntityManager, el Player con ese nombre PISTA1:  @PersistenceContext private EntityManager em; PISTA2: Player player =  em.find(Player.class, name); … .  Suerte
5 – EJB Ejemplos
Conclusiones Introducción al desarrollo Web Servlet JSP Javabeans EJB Struts Resumen y conclusiones   ¿Qué son los EJBs? Beneficios y diferencias con los javaBeans Cambios en la J2EE5.0 EJB 2.1 vs 3.0 Tipos EJBs Session Stateless Stateful MDB (MessageDriven) Entity Bean JavaPersistence Api Prácticas y Ejemplos
Referencias EJB Wikipedia:   http:// es.wikipedia.org / wiki / Enterprise_JavaBeans Manual J2EE 5.0:  http://java.sun.com/j2ee/5.0/docs/tutorial/doc/ Enterprise JavaBeans 3.0 specification: http://java.sun.com/products/ejb/docs.html   The Enterprise JavaBeans web site: http://java.sun.com/products/ejb

Más contenido relacionado

PDF
Spring: Overview do framework mais popular para desenvolvimento em Java
PDF
Apostila java completo
PPTX
Introduction to EJB
PDF
Spring framework Introduction
PDF
Spring core module
PDF
Spring boot
PPTX
Java- JDBC- Mazenet Solution
Spring: Overview do framework mais popular para desenvolvimento em Java
Apostila java completo
Introduction to EJB
Spring framework Introduction
Spring core module
Spring boot
Java- JDBC- Mazenet Solution

La actualidad más candente (20)

PPTX
Karate DSL
PPTX
Spring framework
PPTX
Ppt pengenalan jquery
PPTX
Introduction to react_js
PDF
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
PDF
Curso struts e hibernate
PDF
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
PPTX
Spring boot
KEY
SOLID Design Principles
PPTX
Introduction to Maven
PPTX
PPT
Siebel eScript
PPT
Ppt of Basic MVC Structure
DOC
Hibernate tutorial for beginners
PPT
PPTX
Intro to Java
PDF
UI Testing Automation
PDF
Introduction to Node.JS Express
PDF
Node js (runtime environment + js library) platform
PPTX
Writing and using Hamcrest Matchers
Karate DSL
Spring framework
Ppt pengenalan jquery
Introduction to react_js
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
Curso struts e hibernate
What Is Java | Java Tutorial | Java Programming | Learn Java | Edureka
Spring boot
SOLID Design Principles
Introduction to Maven
Siebel eScript
Ppt of Basic MVC Structure
Hibernate tutorial for beginners
Intro to Java
UI Testing Automation
Introduction to Node.JS Express
Node js (runtime environment + js library) platform
Writing and using Hamcrest Matchers
Publicidad

Destacado (20)

PPS
Desarrollo de aplicaciones empresariales con Java EE
PDF
Frameworks J2EE
PDF
Oracle fusion middleware 11g build applications with adf
PDF
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
PPTX
Introducción a Java 2
PDF
Ejemplo pruebas de software
PDF
avanttic Webinar Oracle SOA 11g
PPT
PPTX
1 curso javaserverfaces-presentacion_clase_1
PPTX
Innovaciones tecnológicas
PPT
Sesion05
PPTX
Modulo 1 java ee platform
PPTX
Servlets exposicion
PPTX
Jsp(java server pages)
PDF
Apache Tomcat + Java EE = Apache TomEE
PPTX
Lenguaje de Programación Ruby
PDF
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
PPTX
Java lenguaje de desarrollo
PDF
Ejb3 Presentation
Desarrollo de aplicaciones empresariales con Java EE
Frameworks J2EE
Oracle fusion middleware 11g build applications with adf
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Introducción a Java 2
Ejemplo pruebas de software
avanttic Webinar Oracle SOA 11g
1 curso javaserverfaces-presentacion_clase_1
Innovaciones tecnológicas
Sesion05
Modulo 1 java ee platform
Servlets exposicion
Jsp(java server pages)
Apache Tomcat + Java EE = Apache TomEE
Lenguaje de Programación Ruby
Java EE 7: Developing for the Cloud at Geecon, JEEConf, Johannesburg
Java lenguaje de desarrollo
Ejb3 Presentation
Publicidad

Similar a Curso Java Avanzado 5 Ejb (20)

PDF
Ejb30 3
PDF
01 jee5-componentes
 
PPT
PPT
Clase 14 intro ej bs
PPS
Guia ejb deshabdig
PPT
JEE 5 - EJB3
PPTX
Arquitectura y diseño de aplicaciones Java EE
PPT
Plataforma de programación Java
PDF
1/9 Curso JEE5, Soa, Web Services, ESB y XML
PDF
[ES] Fundamentos de Java Enterprise Edition
PPTX
Clase ii intro j2 ee resumen
PPTX
Capitulo_3_1.pptx
PPT
spring
PDF
Persistencia de datos en Java
DOCX
Java persitence api
PDF
01_ppt_introduccion_spring_mmmmmmmmm.pdf
Ejb30 3
01 jee5-componentes
 
Clase 14 intro ej bs
Guia ejb deshabdig
JEE 5 - EJB3
Arquitectura y diseño de aplicaciones Java EE
Plataforma de programación Java
1/9 Curso JEE5, Soa, Web Services, ESB y XML
[ES] Fundamentos de Java Enterprise Edition
Clase ii intro j2 ee resumen
Capitulo_3_1.pptx
spring
Persistencia de datos en Java
Java persitence api
01_ppt_introduccion_spring_mmmmmmmmm.pdf

Más de Emilio Aviles Avila (20)

PPTX
Experiencias emprendedor de apps - AppCierta
PPTX
Apps Ser o Estar
PPTX
Aplicaciones móviles, experiencias de emprendedor
PPTX
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
PPT
Desarrollo android - 6 - multimedia
PPT
Desarrollo android - 5 - almacenamiento de datos
PPT
Desarrollo android - 4 - arquitectura de aplicación
PPT
Desarrollo android - 3 - entorno de desarrollo
PPT
Desarrollo android - 2 - arquitectura del sistema
PPT
Desarrollo android -1 - introduccion
PPTX
El mercado de las aplicaciones moviles
PDF
Curso Taller Android Procesado Imagen
PDF
Taller Curso android WhereAmI
PDF
Curso taller android radio streaming
PDF
Como ganar dinero con las apps
PPT
Curso introducción a android
PPT
Curso Introducción a android
PPT
Curso desarrollo en android
PPTX
TeCHmi Service Portfolio
PPT
Curso Uml 3.2 Proceso Unificado
Experiencias emprendedor de apps - AppCierta
Apps Ser o Estar
Aplicaciones móviles, experiencias de emprendedor
Charla estrategia desarrollo aplicaciones móviles Universidad Girona
Desarrollo android - 6 - multimedia
Desarrollo android - 5 - almacenamiento de datos
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android - 3 - entorno de desarrollo
Desarrollo android - 2 - arquitectura del sistema
Desarrollo android -1 - introduccion
El mercado de las aplicaciones moviles
Curso Taller Android Procesado Imagen
Taller Curso android WhereAmI
Curso taller android radio streaming
Como ganar dinero con las apps
Curso introducción a android
Curso Introducción a android
Curso desarrollo en android
TeCHmi Service Portfolio
Curso Uml 3.2 Proceso Unificado

Último (20)

PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Estrategia de apoyo tecnología grado 9-3
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
SAP Transportation Management para LSP, TM140 Col18
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Maste clas de estructura metálica y arquitectura
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PPT
Que son las redes de computadores y sus partes
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
clase auditoria informatica 2025.........
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
Propuesta BKP servidores con Acronis1.pptx
Diapositiva proyecto de vida, materia catedra
Sesion 1 de microsoft power point - Clase 1
Estrategia de apoyo tecnología grado 9-3
introduccion a las_web en el 2025_mejoras.ppt
SAP Transportation Management para LSP, TM140 Col18
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Maste clas de estructura metálica y arquitectura
Estrategia de apoyo tecnología miguel angel solis
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Que son las redes de computadores y sus partes
Calidad desde el Docente y la mejora continua .pdf
clase auditoria informatica 2025.........
Presentación PASANTIAS AuditorioOO..pptx
Power Point Nicolás Carrasco (disertación Roblox).pptx

Curso Java Avanzado 5 Ejb

  • 1. Java Avanzado Emilio Avilés Ávila http://www.techmi.es
  • 2. Workshop (25 horas) Workshop Java avanzado para empresas y profesionales
  • 3. Temario Introducción al desarrollo Web Servlets JSP Javabeans EJB Struts Resumen y conclusiones
  • 4. Tema 5 EJB: Enterprise Java Beans
  • 5. Objetivos Introducción al desarrollo Web Servlets JSP Javabeans EJB Struts Resumen y conclusiones ¿Qué son los EJBs? Beneficios y diferencias con los javaBeans Cambios en la J2EE5.0 EJB 2.1 vs 3.0 Tipos EJBs Session Stateless Stateful MDB (MessageDriven) Entity Bean JavaPersistence Api Prácticas y Ejemplos
  • 6. 5 – EJB ¿Qué es un EJB? Es un componente del la parte servidor que encapsula la lógica de negocio de una aplicación. La Lógica de negocio es el código que cumplimenta el propósito de la aplicación. Ejemplo : una aplicación de control de inventario El enterprise bean podría implementar la lógica de negocio de métodos que se llamas en compruebaNivelInventario o por ejemplo solicitaProducto . Invocando a estos métodos, los clientes remotos podrían acceder a los servicios de inventario proporcionados por la aplicación.
  • 7. 5 – EJB Beneficios EJBs Simplifican el desarrollo de aplicaciones grandes y/o distribuidas El contenedor proporciona servicios a nivel de sistema a los EJBs (Seguridad y Transacciones) Permite dedicarnos sólo a problemas de negocio Abstrae al programador de la capa de cliente Puede dedicarse exclusivamente del diseño. Permite construir clientes ligeros (móviles) Al ser portables pueden ser incluidos en otra aplicación con beans ya existentes.
  • 8. 5 – EJB ¿Cuándo usar EJBs? Cuando la aplicación sea escalable Si el número de usuarios es elevado Distribución en varias máquinas (cluster, HA) La localización es transparente al cliente Cuando deba haber integridad de datos Los EJBs soportan transacciones Mecanismo para soportar acceso concurrente a objetos Cuando hay distintos tipos clientes Con pocas líneas de código, cualquier cliente remoto puede localizar EJBs Clientes móviles, TV, Tablet PC, etc.
  • 9. 5 – EJB Diferencia entre JavaBeans y EJB Paquetes JavaBeans: paquetes java definibles. EJB: Paquete javax.ejb. Ámbito de interacción JavaBeans : Interactúan entre ellos SÓLOs dentro del mismo espacio de nombres . EJB : Interactúan con otros componentes que pueden pertenecer a otro espacio. Capa JavaBeans : Capa cliente y Negocio . EJB: Solo capa de negocio y acceso a BDD.
  • 10. 5 – EJB Diferencia entre JavaBeans y EJB (II) JavaBeans: Es una interfaz de Sun para construir aplicaciones reutilizables. Permite construir bloques que puedan usarse de forma separada o en conjunción con otros. EJB: Sólo se utilizan en la capa de negocio (Bussiness Tier) Pueden servir de comunicación entre componentes del servidor y una Base de Datos (EIS)
  • 11. 5 – EJB Componentes de Negocio Es la lógica que resuelve o cumple las necesidades de un negocio en particular Banca La venta Financiación Se maneja o encapsulan mediante Enterprise Java Bean (EJB) Representa el modelo de comunicarnos con lo que conocemos como modelo de datos
  • 12. 5 – EJB Modelo de Datos Capa de sistema de información Empresarial En J2EE EIS Maneja el software del sistema de información: ERP’s, BDD, CRMs, BackEnds. Las aplicaciones J2EE, y en particular la lógica de negocio a través de sus componentes, requieren de acceso a estos datos.
  • 13. 5 – EJB Ejemplo de una arquitectura J2EE
  • 14. 5 – EJB Donde estamos: Foto!!
  • 15. 3 – JSP: Java Server Pages Ejercicio práctico Mi primer Enterprise Application Crear un proyecto J2EE en NetBeans … . Suerte
  • 16. 5 – EJB ¿Qué trae nuevo J2EE 5.0 respecto a EJB? Los descriptores de despliegue XML son ahora opcionales . (No más ejb-jar.xml ) En lugar de ello, empleamos Annotations (anotaciones, también llamados metadatos ) directamente en un POJO, dentro del código fuente en el que estemos trabajando. POJO: Plain Old Java Object Se reconocen porque empiezan por @
  • 17. 5 – EJB Anotaciones @ Las anotaciones se usan para incrustar datos en un programa que de otra forma tendrían que ser proporcionados en un fichero por separado. JEE5 proporciona anotaciones para estas tareas: Definir y usar Web Services Desarrollar aplicaciones EJB Mapeo de clases Java a XML Mapeo de clases Java a Bases de Datos Mapeo de métodos a operaciones Especificación de dependencias externas Especificación de información de despliegue, incluyendo seguridad .
  • 18. 5 – EJB Anotaciones (Metadatos) para EJB @Stateless, @Stateful. Para indicar si es un componente bean de sesión stateless o stateful @PostConstruct, @PreDestroy, @PostActivate, @PrePassivate. Indicación un método como de event callback * @EJB. Usado en un cliente JEE para referenciar instancias de Enterprise Beans. @PersistenceUnit. Se usa para expresar una dependencia de un E ntityManagerFactory . @PersistenceContext. Se usa para expresar una dependencia de un EntityManager . @WebServiceRef. Se usa en un cliente para referenciar web services . @Resource. Para todos los demás recursos no cubiertos por @EJB o @WebServiceRef @Timeout. Especifica un método timeout sobre un componente que use servicios de temporizador ( container-managed timer services) . @MessageDriven. Especifica un bean message-driven . Un bean message-driven es un consumidor de mensajes que puede ser llamado por su contenedor. @TransactionAttribute. Aplica un atributo transaction a todos los métodos de un interfaz de negocio o a métodos de negocio individuales de un bean @TransactionManagement. Declara si un bean tendrá transacciones container-managed o bean-managed (controladas por contenedor o por bean). @RolesAllowed, @PermitAll, and @DenyAll. Permisos de métodos. @RolesReferenced. Declara roles de seguridad referenciados en el código del bean @RunAs. Usa un rol de seguridad especificado para ejecutar un método.
  • 19. 5 – EJB Características EJB 2.1 Muy potente, pero complejo de usar Demasiadas clases e interfaces. Java Naming an Directory Interface (JNDI) para búsquedas. Interfaces Javax.ejb Descriptores de despliegue Modelo de programación complicado y pesado Incremento de costes
  • 20. 5 – EJB Desarrollo simplificado con EJB 3.0 La tecnología EJB es ahora más sencilla de aprender y usar. Menor número de clases e interfaces Inyección de dependencias ( dependency injection ) Búsquedas simples No se requieren interfaces de contenedor No se requieren descriptores de despliegue Persistencia simplificada Mapeo objeto/relacional Incremento de la productividad del programador.
  • 21. 5 – EJB Compatibilidad EJB 2.1 - EJB 3.0 Todas las aplicaciones existentes en la actualidad siguen funcionando en este modelo. Facilidad de integración entre componentes y aplicaciones preexistentes. Permite que se actualicen o reemplacen componentes (usando APIS EJB 3.0) sin afectar a los clientes existentes. La migración incremental facilita la adopción de la tecnología EJB 3.0
  • 22. 5 – EJB Tácticas de EJB 3.0 El contenedor realiza más cantidad de trabajo tedioso, y el desarrollador menos, de modo que puede centrarse en tareas más importantes. El Bean especifica lo que necesita usando metadatos, de modo que ya no tenemos que escribir interfaces de contenedor innecesarios. El contenedor actúa de intermediario para proporcionar los servicios que sean requeridos.
  • 23. 5 – EJB Tipos de EJB Beans de sesión: Representa una conversación temporal con un cliente. Cuando el cliente finaliza su ejecución, el bean y sus datos desaparecen. Beans de entidad o Java Persistence API Representa datos persistentes almacenados en una fila de una tabla/relación de una base de datos. Si el cliente termina o si se apaga el servidor, los servicios subyacentes se aseguran de grabar el bean. La nueva Java Persistence API ha simplificado la persistencia de los entity beans. Los nuevos entity objects son POJOs que proporcionan una vista orientada a objetos de los datos almacenados en una base de datos. Beans dirigidos por mensajes: Combina las características de un bean de sesión y un Permite que un componente de negocio reciba asincrónicamente mensajes JMS.
  • 24. 5 – EJB Stateless Session Bean No dispone de variables de instancia. Los datos no son compartidos por los métodos. Realizan trabajos o métodos independientes. El resultado de las operaciones no son dependientes de ningún estado.
  • 25. 5 – EJB Ejemplo stateless session bean Sesión bean de operaciones con clientes Consultar, guardar o borrar clientes Necesita siempre de una interfaz En caso de no crearla, la crea el contenedor
  • 26. 5 – EJB Interfaz Local o Remota @Local: Si el bean está siendo usado por una clase se está ejecutando en la misma JVM @ Remote: Distinta máquina virtual (JVM)
  • 27. 3 – JSP: Java Server Pages Ejercicio práctico Mi primer Session Stateless Bean Crear con NetBeans SessionBean Cliente public void grabarCliente(Cliente cliente ); public Cliente getCliente ( Long id ); public Collection getAllClientes(); public boolean deleteCliente ( Long id ); … . Suerte
  • 28. 5 – EJB Interfaz Local o Remota Servlet y bean session Una vez ensamblado y desplegado El contenedor es el interface del bean con funcionalidades de bajo nivel del sistema.
  • 29. 3 – JSP: Java Server Pages Ejercicio práctico Servlet -> StateLess Crear con NetBeans el proyecto que viene como ejemplo Sample -> ServletStateLess … . Suerte
  • 30. 5 – EJB Ejemplo Completo stateless session Bean @PersistenceContext. Se usa para expresar una dependencia de un EntityManager
  • 31. 5 – EJB WebServices con stateless session bean Generar una respuesta basado en información del cliente. HelloServiceBean  sayHello(String hola) El endPoint debería tener Anotación jws.WebService o jws.WebServiceProviderla La clase con anotación @Webservice Los Bussiness Method deben ser públicos y NO deben ser static ni final. Los Bussiness Method deben anotar jws.WebMethod La clase que lo implemente NO final ni abstract ni métodos finalize() El endpoint debe anotar @stateless
  • 32. 5 – EJB stateful session bean Al contrario que los anteriores, tienen estado Pueden almacenar variables de instancia Los datos son compartidos por los métodos. El resultado de las operaciones son dependientes del estado cuando éstas son llamadas.
  • 33. 5 – EJB Ejemplo stateful session bean Carro de la compra on-line El usuario va agregando productos a la cesta. En el momento de la compra, tendrá que realizar el registro de sus datos. Dirección de entrega Tarjeta de crédito Estos datos se almacenan en variables que conforman el estado del bean Necesita también siempre de una interfaz Sino, la crea el contenedor
  • 34. 5 – EJB Ejemplo Carro de la compra on-line Interfaz ( remote o local) Implementación = stateful session bean
  • 35. 3 – JSP: Java Server Pages Ejercicio práctico Mi primer Session Statefull Bean Crear con NetBeans SessionBean Carrito Interfaz Local y remota Metodos public void añadirProducto(String producto); public void eliminarProducto(String producto); public Colection listarCompra(); … . Suerte
  • 36. 5 – EJB Message driven bean Este tipo de beans (MDB) permite a las aplicaciones procesar mensajes de forma asíncrona a través del servicio JMS JMS funciona a través de colas de mensajes Los clientes envían sus peticiones a las colas Estas colas son controladas por los Message Driven Beans Los MDB procesan los mensajes que hay en ellas y ejecutan ciertos servicios dependiendo del mensaje procesado. Este tipo de beans se aproximan más a la forma conceptual de los Stateless Session Bean en el sentido que son beans que no deben almacenar estado alguno.
  • 37. 5 – EJB ¿Cómo funcionan las colas de los MDB? Cuando un mensaje llega a la cola el contenedor hace una llamada al método onMessage del Message Driven Bean Este método debería invocar a métodos de otros sesión bean o realizar la lógica de negocio de debiera ejecutar Es más conveniente no tener aquí lógica de negocio, Sino hacer invocaciones a métodos de otras clases que sí se encarguen de realizar lógica de negocio. Para declarar un MDB @MessageDriven a una clase que implemente la interface MessageListener Indicar el nombre de la cola del contenedor ( la cuál es accesible vía JNDI) que va a controlar el MDB
  • 38. 5 – EJB Ejemplo Aplicación cliente JMS. La aplicación cliente envía el msg a la cola. La cola tuvo que ser creada ( Admin Console). El JMS provider (en nuestro caso el Application Server ) entrega el msg al MDB
  • 39. 5 – EJB Ejemplo Aplicación cliente JMS – Código Injectamos los recursos Conexión y las colas Creamos la conexión , session y productor . Enviamos mensajes con el cliente
  • 40. 3 – JSP: Java Server Pages Ejercicio práctico Mi primer MDB Crear con NetBeans MessageDrivenBean SMTPBroker Crear la cola Queue Verla en la consola del Servidor de aplicaciones OnMessage Llamada (a un session Bean) … . Suerte
  • 41. 5 – EJB Dependecy Injection Patrón según el cual las dependencias de un objeto se proporcionan automáticamente por una entidad externa a ese objeto No es necesario que ese objeto pida el recurso explícitamente. Para solicitar la inyección de un recurso, el componente usa la anotación @Resource . En algunos recursos especializados, también las anotaciones @EJB y @WebServiceRef. Patrón Hollywood: “No me llames, ya te llamo yo”
  • 42. 5 – EJB Dependecy Injection (II) La idea es tener objetos separados para que la implementación solo dependa del Interface El Assambler proporciona los campos de la implementación al MovieLister
  • 43. 5 – EJB Dependecy Injection
  • 44. 5 – EJB Ciclo de Vida de los Session EJB Stateful Session EJB Stateless Session EJB
  • 45. 5 – EJB Ciclo de Vida de los MessageDriven EJB Message Driven Beans
  • 46. 5 – EJB Java Persistence API Antiguos EJB de entidad ( Entity EJB). Un entidad es un objeto de persistencia. Normalmente representa un registro de BDD. Trata lo siguiente: Como los datos relacionales se mapean a Objetos Java persistentes. Como se almacenan en la BDD relacional. Conseguir existencia de un estado continuado incluso después de finalizada la aplicación. Estandariza el mapeo objeto relacional.
  • 47. 5 – EJB Características Java API persistence (I) Las entidades son POJOs: Al contrario que los componentes EJB que usan container-managed persistence (CMP). Los objetos entidad ya no son componentes Mapeo estandarizado objeto/relacional Mapear información objeto/relacional annotations o XML Coge la filosofía ORM de Hibernate Soporte de herencia y polimorfismo: Obviamente al ser los objetos de entidad POJOs.
  • 48. 5 – EJB Características Java API persistence (II) Soporte a consultas nativas ( native query ): Además del Java Persistence Query Language. Consultas en el lenguaje nativo de la BD subyacente. Named Query Es una consulta estática expresada en metadatos. Consulta Java Persistence query o native query. Lo cual mejora la reutilización de consultas. Reglas de empaquetado simplificadas: Al se POJO pueden ser empaquetadas en cualquier lugar de un aplicación.
  • 49. 5 – EJB Características Java API persistence (II) Soporte para bloqueo optimista ( optimist locking ): Es una técnica que evita el bloqueo por razones de rendimiento pero teniendo en consideración que la transacción puede fallar debido a colisión con otro usuario. Entidades separadas ( Detached Entities ): Como las entidades son POJOs, pueden ser serializadas ( implements Serializable ) y enviadas a través de la red a distintas direcciones. Ya no son necesarios los Data Transfer Objects (DTOs). EntityManager API : En operaciones CRUD ( Create Read Update Delete ) que impliquen entidades. Conectividad de proveedores de persistencia de terceros: Es un interfaz entre un contenedor Java EE y un proveedor de persistencia. (JDBC, etc.)
  • 50. 5 – EJB Características Java API persistence (III) La API propiamente dicha javax.persistence Objetos principales EntityManager : permite crear, encontrar por clave primera, y eliminar objetos persistentes, y crea objetos Query Query : permite lanzar consultas en EJB-QL Internamente las implementaciones usan el API de JDBC (transparentemente al programador) EJB-QL (EJB Query Language) Lenguaje de consultas de búsqueda y borrados & actualizaciones en masa. La implementación traduce al SQL de la BD que se esté usando
  • 51. 5 – EJB Entity beans Son Clase ( POJO ) Representa una tabla de una base de datos Cada instancia de esta clase representa un registro de la tabla Mapeo propiedades de una clase / campos de una tabla. Especificar las relaciones que tienen las clases uno a uno, uno a muchos, muchos a uno y muchos a muchos Todo Entity Bean debe tener una clave primaria Identifica a ese registro de forma única dentro de la tabla. Configuraciones a través de anotaciones JPA (Java Persistent API ) gestiona todos los aspectos relativos a la persistencia
  • 52. 5 – EJB Ejemplo Entity bean: Team Establecer anotación @entity Establecer @id para la clave primaria Anotaciones de relación (@OneToMany)
  • 53. 5 – EJB Ejemplo Entity bean: Team
  • 54. 5 – EJB Ejercicio práctico Crear la Entidad Player, que al igual que la entidad anterior va a tener: Una anotación @Entity Otra anotación @Id Una anotación @ManyToOne para establecer una relación bidireccional entre las dos entidades
  • 55. 3 – JSP: Java Server Pages Ejercicio práctico Mi primer Entity Bean con NetBeans Crear un Entity Bean: Team private Long id; protected String name; protected Date fechaCreacion; protected Collection players; /* @OneToMany */ Crear un Entity Bean: Player private Long id; protected String name; protected Team team; /* @ManyToOne ]/ … . Suerte
  • 56. 5 – EJB Ejemplo Empleados/Departamentos
  • 57. 5 – EJB Ejemplo uso entity bean A través del stateless bean HRMS
  • 58. 3 – JSP: Java Server Pages Ejercicio práctico Relacionar SessionBean con Entity Beans Crear un método de Negocio en Cliente public Player crearPlayer(String name) Buscar con el EntityManager, el Player con ese nombre PISTA1: @PersistenceContext private EntityManager em; PISTA2: Player player = em.find(Player.class, name); … . Suerte
  • 59. 5 – EJB Ejemplos
  • 60. Conclusiones Introducción al desarrollo Web Servlet JSP Javabeans EJB Struts Resumen y conclusiones ¿Qué son los EJBs? Beneficios y diferencias con los javaBeans Cambios en la J2EE5.0 EJB 2.1 vs 3.0 Tipos EJBs Session Stateless Stateful MDB (MessageDriven) Entity Bean JavaPersistence Api Prácticas y Ejemplos
  • 61. Referencias EJB Wikipedia: http:// es.wikipedia.org / wiki / Enterprise_JavaBeans Manual J2EE 5.0: http://java.sun.com/j2ee/5.0/docs/tutorial/doc/ Enterprise JavaBeans 3.0 specification: http://java.sun.com/products/ejb/docs.html The Enterprise JavaBeans web site: http://java.sun.com/products/ejb