1. 2015 ByWind Software Lic. Roberto Marchena Java EE Platform
Basado en el curso Developing Applications for the Java EE 6
Platform (FJ-310-EE6) del Oracle Java and Middleware Training
2. Java EE Platform Temario 01.- Introduccin 02.- Java EE
Component Model 03.- Web Component Model 04.- Servlets 05.-
JavaServer Pages (JSP) 06.- EJB Component Model 07.- EJB 3 Session
Beans 08.- Java Persistence API (JPA) 09.- Java Transaction API
(JTA) 10.- Message-Driven Beans 11 .-Web Services Model 12.-
Security Policies
3. 01.Introduccin Java Language roadmap 1995 - JDK Alpha and
Beta - Sun Microsystems Enero 1996 JDK 1.0 Febrero 1997 - Microsoft
Visual J++ (MSJVM) Febrero 1997 - JDK 1.1 - JavaBeans | JDBC | RMI
| reflection | JIT compiler Marzo 1998 - EJB 1.0 Especificacin para
construir Enterprise Applications Diciembre 1998 - J2SE 1.2 - Java
2 Platform (J2SE, J2EE, J2ME) | Swing | Java IDL | Collections
Diciembre 1999 EJB 1.1 - XML deployment descriptors | RMI over IIOP
| Entity Bean support Mayo 2000 - J2SE 1.3 - Compatibilidad RMI con
CORBA | JNDI Agosto 2001 EJB 2.0 - Standard component architecture
| components from different vendors (Write Once, Run Anywhere)
Febrero 2002 - J2SE 1.4 - Primera edicin desarrollada bajo el JCP |
logging API | integrated XML parser | integrated security and
cryptography extensions | Java Web Start included Febrero 2002
Microsoft Visual J# (ltima release .NET. Visual Studio 2005)
Noviembre 2003 EJB 2.1 - Web service support | EJB timer service
Septiembre 2004 - J2SE 5.0 - Metadata | Enumerations | Varargs |
Enhanced For Each Mayo 2006 EJB 3.0 Facilidad escribir EJBs usando
'annotations' en lugar de complejos 'deployment descriptors'
Diciembre 2006 - Java SE 6 Java Platform (Java SE, Java EE, Java
ME) | Scripting Language Support | Improved Web Service support
through JAX-WS | JDBC 4.0 support | Java FX | Security fixes Abril
2009 - Oracle compra a Sun Microsystems Diciembre 2009 EJB 3.1 -
Local view without interface | .war packaging of EJB components |
Singletons (Singleton Session Beans) Julio 2011 - Java SE 7 - JVM
support for dynamic languages | Security fixes Mayo 2013 . EJB 3.2
Minor release Marzo 2014 - Java SE 8 - Lambda Expressions | Improve
the Java security model | Date and Time API 2015 - Java 9 - Big
data | multi-language interoperability | cloud | mobile 2017 - Java
10 Aun se encuentra en disusin | unified type system turns
everything into objects (no more primitives)
4. 01.Introduccin Java EE Java EE applications large-scale
multi-tiered scalable reliable secure network Distributed
components Java EE Infraestructure Technologies Java EE Technology
Suite Java Technology Platforms
5. 01.Introduccin Java EE layers Bussines Logic components
Container services Deployment-based services Persistence
Transaction Security API-based services Naming Messaging Connector
Inherent services Life-Cycle Threading Remote object communication
Vendor-specific Scalability Failover Load balancing Platform
services Java DataBase Connectivity (JDBC) Java Naming and
Directory Interface (JNDI) API RMI over Internet Inter-Object
Broker (ORB) Protocol (IIOP) JavaMail API Java EE Connector
Architecture (JCA) Java Message Service (JMS) API Java Transaction
API (JTA) Java Authentication and Authorization Service (JAAS) Java
API for XML Processing (JAXP) Web services integration (XML-based
RPC and messagning operations) Simple Object Access Protocol (SOAP)
Attachment API for Java (SAAJ) Java API for XML Registries (JAXR)
Java API for XML Web Services (JAX-WS) Java Management Extensions
(JMX) Timer services Java Persistence API (JPA)
6. 01.Introduccin n-Tier Model (1) Java EE EJB
Component-Centric Architecture Java EE Web-Centric Architecture
Java EE Application Mapped to the n-Tier model
7. 01.Introduccin n-Tier Model (2) B2B Application Architecture
Java EE Web Service Architecture
8. 01.Introduccin Java Patterns Java EE Patterns (principios
arquitectura) Presentation Tier View Helper Front Controller
Business Tier Service Locator Session Facade Transfer Object
Integration Tier Data Access Objects (DAO) Domain Store Java EE
BluePrints Java Pet Store application AJAX Web Services Naming and
Project conventions etc. GoF Patterns (principios diseo) Creational
Factory Method Abstract Factory Singleton Structural Facade Proxy
Adapter Bridge Composite Decorator Behavioral Strategy Command
Iterator Observer Mediator Using Java EE Patterns
9. 02.Java EE Component Model Java EE Components Java EE
Components Principios La especificacin EJB se dise para soportar
componentes de diferentes vendedores Los componentes EJB se pueden
crear sin conocer el ambiente en el que se ejecutarn Los
componentes EJB son Loosely coupled Fcil de testear Fcil de reusar
Caractersticas Los componentes pueden tener un estado Tienen
propiedades (mtodos accessor / mutator) Encapsulacin por el
contenedor Una estricta separacin entre las intefaces y su
implementacin Soportan interaccin local y remota con otros
componentes Location transparency
10. 02.Java EE Component Model Encapsulated Components
Encapsulated Components El container Encapsula los componentes
Controla su ciclo de vida Aisla los componentes de otros
componentes y del entorno Interfaces como contratos Un componente
puede interactuar con otro nicamente a travs de su interface
Incluso los componente que se ejecutan en una misma JVM
Interacciones locales y remotas Permite especificar cuales
componentes pueden accederse en forma local, remota o ambas
Interaccin local ambos componentes usan la misma JVM Para una
interaccin remota se utiliza RMI
11. 02.Java EE Component Model Local vs. Remote invocations
Distributed Components and RMI El protocolo IIOP El protocolo RMI
se ejecuta sobre IIOP que es parte de la especificacin CORBA En
interacciones locales Los argumentos que se pasan entre componentes
comparten el mismo espacio de memoria Los argumentos pueden ser
modificados por el componente destino Tanto el origen como el
destino ven la misma instancia del argumento En interacciones
remotas Los argumentos se pasan copiando su estado Los argumentos
se serializan para transferirlos a travs de la red Excepcin cuando
los argumentos son en si mismo componentes distribuibles porque
pasan su stub
12. 02.Java EE Component Model Location Transparency Es uno de
los objetivo en el diseo de la plataforma Java EE Se puede hacer el
deploy de un componente en ms de un servidor con los siguientes
beneficios: Load balancing: Las llamadas pueden hacerse en forma
circular entre ditintos servers para distribuir la carga Faut
tolerance: En caso de falla de un servidor se puede redireccionar a
otro servidor
13. 02.Java EE Component Model Naming Services Locations
transparency / Naming Service Java Naming and Directory
Interface(JNDI) Permite a un componente obtener una referencia a
otro componente El contenedor provee sus componentes a travs de un
repositorio central donde los componentes son accesibles por su
nombre Java EE usa la JNDI API como servicio de bsqueda Conexiones
con bases de datos relacionales Conexiones con servicio de mensajes
Destino de mensajes Conexiones con legacy systems que usan adapters
Se puede utilizar Dependency Injection para localizar componentes
que maneja el servidor como EJBs, Servlets y JSPs Performing a
Lookup Operation Dependency Injection as an alternative to
Lookups
14. 02.Java EE Component Model Asynchronous Communication
Asynchronous Component-to-Component Asynchronous Messaging with JMS
Synchronous vs. Asynchronous Operaciones sincrnicas
Request-Response se caracterizan porque el cliente se bloquea hasta
tanto recibe la respuesta En operaciones asincrnicas Request-
Notification el cliente hace una solicitud y contina procesando y
luego recibe una notificacin ms tarde Las operaciones asincrnicas
reducen el acoplamiento entre componentes Para operaciones
asincrnicas los componentes usan la JMS API para enviar mensajes y
los Message-driven beans actuan como consumidores de mensajes
Ventajas operaciones asincrnicas: Reducen el acoplamiento entre
componentes Permiten realizar operaciones que toman tiempo en
completarse Desventajas operaciones asincrnicas: Requieren una
infraestructura ms compleja Uso menos eficiente de los recursos de
red
15. 02.Java EE Component Model Desarrollo aplicaciones Java EE
Java EE Roles Application component provider Application assembler
Developer System administrator Tool provider Product provider Steps
for deploying a Java EE Application Designing Coding Creating
deployment descriptors Packing Assembling Deployment Java EE
Application Development Process
16. 02.Java EE Component Model Packing Java EE Applications
Tipos de archivos utilizados para distribuir aplicaciones Java EE
Web archive (WAR) files Java Archive (JAR) files Resource archive
(RAR) files Enterprise archive (EAR) files Web Archive File (.war)
EJB JAR file contents EAR file contents
17. 03.Web Component Model Introduccin Objetivos del Web-tier
Generar contenido dinmico en diferentes formatos content-type HTML
page text/html XML document text/xml Image in JPEG format
image/jpeg Obtener y validar informacin de la interfaz del usuario
y retornar una respuesta adecuada del business-tier Controlar el
flujo de pantallas o pginas en el cliente Mantener el estado de los
datos de la sesin del usuario Resolver lgica bsica y mantener
algunos datos en forma temporal Web-Tier Java EE Technologies
Servlets JavaServer Pages (JSP) Web-Tier frameworks: JavaServer
Faces (JSF), Struts, etc. HTTP protocol Request-Response Model Life
Cycle of a Web Component
18. 03.Web Component Model Hello World Servlet
19. 03.Web Component Model Hello World JSP
20. 03.Web Component Model Servlets and JSP Components Servlets
JSP collaboration Servlets para manejar request processing Servlets
intecatan con la lgica del negocio recopila datos amostrar JSP
components para visualizar los datos al cliente Model View
Controller (MVC) architecture Web-Tier Decoupled from Business
Logic
21. 03.Web Component Model Hello World JSF
22. 04.Servlets Introduccin Servlet API Request Handling
Methods A basic web.xml Deployment Descriptor Servlet Live Cycle
Methods
23. 04.Servlets Request and Response APIs Request y Response
APIs Obtener datos Pasar datos de un componente a otro Obtener
informacin de seguridad Generar una salida o respuesta Mtodos
objeto Request getParameter setAttribute / getAttribute
getRequestDispatcher Mtodos objeto HttpServletRequest
getUserPrincipal getCookies getSession Mtodos objeto Response
getOutputStream getWriter setContentType Mtodos objeto
HttpServletResponse encodeURL addCookie sendError RequestDispatcher
Interface Mtodos RequestDispatcher forward (tpico para controllers)
include (tpio para views) Transferir datos en el objeto
Request
24. 04.Servlets Session Management API Session management API
Determina cuando una sesin ha sido creada Hace posible al server
identificar el cliente Agrega un named item a una sesin Obtiene un
named item de una sesin Despues de autenticarse el Id y estado del
usuario son parte de la sesin Manejo de Session Timeout Cierra una
sesin Java EE Platform Web-Tier Session Management Retrieving a
Session Object Invalidating a Session
25. 05.JavaServer Pages (JSP) Introduccin Caractersticas
Extensin .jsp La tecnologa JSP est basada en Write Once, Run
Anywhere y puede correr en cualquier navegador web Describen como
procesar un Request y crear un Response (front-end access) Adems de
elementos estticos (HTML o XML) contienen elementos JSP Los
componentes que usa o accede se basa en la arquitectura JavaBeans
Usa beans para interactuar con los servidores del lado del servidor
Proveen acceso al conjunto completo de Java APIs Son componentes
basados en el modelo Servlet y tienen el mismo comportamiento Al
compilarse y ejecutarse como Servlets tienen beneficios similares a
los CGIs Worker Beans, JSTL y Custom Tags Incoporan clases y el
JavaServer Pages Standard Tag Library (JSTL) usando el tag El uso
de Custom Tag Libearies permite la reutilizacin de cdigo JSP Page
Translation Procedure
26. 05.JavaServer Pages (JSP) Componentes Directive Types: page
include taglib JSP Page Components JSP 2.1 soporta XML tags
27. 05.JavaServer Pages (JSP) page include Directives JSP page
Directives JSP include Directive
28. 05.JavaServer Pages (JSP) Declarations and Expressions
Declarations Se usa para declarar variables y mtodos que se pueden
usar dentro de la pgina Expressions El contenedor JSP evala la
expresin en runtime El contenedor JSP automticamente convierte la
expresin a String
29. 05.JavaServer Pages (JSP) Scriptlets Scriptlets Bloques de
cdigo que tiene acceso full a Java API El contenedor JSP inserta
los scriptlets sin modificacin JSP to Servlet translation
30. 05.JavaServer Pages (JSP) jsp:useBean Action jsp:useBean
Scopes jsp:useBean action Se usa por lo general para compatir
informacin entre Servlets y pginas JSP usando un scope request Los
Servlets en general atienden las solicitudes del front-end y
redireccionan el resultado usando pginas JSP En general se
establecen los atributos en los Servlets y jsp:useBean se usa para
obtener los datos
31. 05.JavaServer Pages (JSP) jsp:getProperty Action
jsp:getProperty Action El estilo XML para usar, modificar, o crear
objetos
32. 05.JavaServer Pages (JSP) JavaServer Pages Standard Tag
Library (JSTL) URI Prefijo Descripcin
http://java.sun.com/jsp/jstl/core c core library
http://java.sun.com/jsp/jstl/xml x XML processing library
http://java.sun.com/jsp/jstl/fmt fmt I18n formatting library
http://java.sun.com/jsp/jstl/sql sql SQL library
http://java.sun.com/jsp/jstl/functions fn EL functions Java EE
provee varios tags. Estas libreras se agrupan por funcionalidades
Ejemplo
33. 05.JavaServer Pages (JSP) Expression Language (EL) Pueden
combinarse con JSP libraries para evitar tener que usar scriptlets.
Ejemplos:
34. 05.JavaServer Pages (JSP) Custom Tag Libraries
/WEB-INF/tags/message.tag Los Custom Tags permiten extender el set
de tags que el contenedor JSP puede interpretar Ejemplo:
35. 06.EJB Component Model Introduccin EJB Components
Distributed Scalable Transactional multi-user secure Tipos de EJB
Session EJB components Stateless Stateful Message-Driven Beans
Entity EJB components (*) Un container puede tambin contener Java
Persistence API (JPA) entity classes Object Relational Mapping
(ORM) Otras helper o utility classes EJB Timer Service At a
specific time After a specific elapsed duration At specific
reucrring intervals EJB Application Tiers
36. 06.EJB Component Model EJB Container El modelo usa
contenedores para encapsular componentes usando intefaces base:
EJBContext SessionContext MessageDrivenContext Funciones de un EJB
Container: Provee proxies que limitan y controlan el acceso
Encapsula el acceso a recursos externos y provee servicios de
connection pooling Maneja el ciclo de vida de las intancias de los
componentes EJB Aisla las clases que proveen la implementacin del
cliente Provee timer services Para message-driven beans el
container monitorea la cola de mensajes EJB Container
37. 07.EJB 3 Session Beans Tipos de session beans Stateless
Session Beans No retiene informacin especfica del cliente El
cliente podra no obtener la misma instancia del session bean Una
instancia de session bean puede responder a varios clientes
Stateful Session Bean El bean pertenece a un cliente en particular
La conexin del cliente existe hasta que el cliente remueve la
instancia o finaliza por timeout El container mantiene objetos EJBs
e instancias EJB separados para cada cliente Requieren ms memoria
por cliente que un stateless session bean Stateless Session Beans
Stateful Session Beans
38. 07.EJB 3 Session Beans Crear un Session Bean Declarar las
Business Interfaces para el session bean Local interface (default)
Remote interface Crear la clase para el session bean que implementa
la/s interface/s Configurar el session bean Anotations Deployment
descriptor (ejb-jar.xml) Packaging and Deploy Session Beans Local
interface Session Beans class
39. 07.EJB 3 Session Beans Crear un cliente local El cliente se
ejecuta en la misma JVM Usa injetion services del container @EJB
trabaja con: Otros EJBs manejados por el mismo container JSF
Managed Beans Servlets Enterprise Application Client alojada en el
mismo container
40. 07.EJB 3 Session Beans Crear un cliente remoto El cliente
se ejecuta en otra JVM Usa JNDI naming services para obtener una
referencia al bean
41. 07.EJB 3 Session Beans Life-Cycle Event Handlers Callback
methods: PostConstruct PreDestroy PostActivate PreActivate Un mismo
mtodo puede manejar varios callbacks Un callback puede tener
asignado un nico mtodo Una excepcin en un callback method causa un
Rollback Lyfe Cycle of a Session Beans Callback Method in Bean
Class
42. 07.EJB 3 Session Beans SessionContext Object Uso del objeto
SessionContext para: Acceder objetos EJB Obtener el estado de la
transaccin Obtener security information SessionContext extiende
EJBContext
43. 08.Java Persistence API (JPA) Introduccin Concepto de
persistencia La Java Persistence API (object / relational mapping)
Tipo persistencia de un contenedor EJB Container-Managed
Persistence (EJB 2.1 CMP) Application-Managed Persistence (EJB 2.1
BMP) JPA no requiere un contenedor EJB Object Relational Mapping
(ORM) software Anotations xml configuration files Java Data Objects
(JDO) 1-N Mapping of a Java Object to Relational Tables Entity
Beans
44. 08.Java Persistence API (JPA) Entity Class Requirements
Declarar las Entity Classes Verificar y sobreescribir el mapeo
predeterminado Persistent Fields No pueden ser pblicos No los puede
acceder el cliente Tienen el keyword @Column Persistent Data Types
Java primitives types Java wrappers java.lang.String byte[] /
Byte[] char[] / Character[] Serializable Types java.util.Date
java.util.TimeStamp Object Tier to Database Tier elements
45. 08.Java Persistence API (JPA) Components Persistence Unit
Especifica las caractersticas del DataSource utilizado Define las
clases que forman parte de la unidad de persistencia Es un
agrupamiento lgico de todos los elementos que requiere el
contenedor y es necesario para hacer el deploy de Entity Classes
Entity Manager Provee mtodos para controlar un Persistence context
Administra el ciclo de vida de las Entity instances Reemplaza gran
parte de la funcionalidad de los Entity Beans de EJB 2.1
Persistence context Todo Entity Manager se asocia a un Persistence
context Es un conjunto de instancias de entidades Tipicamente tiene
la duracin de una transaccin Pueden existir varios Persistence
context usando la misma Persistence entity al mismo tiempo
Persistence identity Es el valor unico que usa el contenedor para
mapear una instancia de una entidad
46. 08.Java Persistence API (JPA) Persistence Unit Example of
Persistence Unit Components within an EJB-JAR Donde poner los
elementos de un Pesistence unit En un archivo EAR En un archivo
EJB-JAR En un archivo WAR En un archivo JAR de una aplicacin
47. 08.Java Persistence API (JPA) transaction-type JTA
RESOURCE_LOCAL El contenedor crea y administra el EntityManager El
desarrollador es responsable de crear y administrar el
EntityManager Se obtiene un EntityManager usando la
@PersistenceContext annotation Usa el EntityManagerFactory para
obtener un EntityManager No puede utiliar la @PersistenceUnit
annotation para hacer referencia a la unidad JTA El
EntityManagerFactory puede ser inyectado usando la @PersistenceUnit
annotation Solamente se puede obtener un EntityManager suministrado
por el contenedor No puede utilizar la @PersistenceContext
annotation y llamar al mtodo
entityManagerFactory.createEntityManager devuelve dos instancias de
EntityManager y en concecuencia a dos PersistenceContexts/Caches
Puede usar Declarative JTA Transactions Se debe usar los mtodos
begin/commit para demarcar transacciones para usar el
EntityTransaction API El PersistenceContext/Cache es flushed y
liberado con un JTA commit El desarrollador es responsable de
liberar los recursos utilizados
48. 08.Java Persistence API (JPA) transaction-type=JTA
persistence.xml sun-resources.xml
49. 08.Java Persistence API (JPA)
transaction-type=RESOURCE_LOCAL
50. 08.Java Persistence API (JPA) Entity Manager Life-Cycle
States Entity Instance States and Entity Manager Methods Callback
anotations @PrePersist @PostPersist @PreRemove @PostRemove
@PreUpdate @PostUpdate @PostLoad
51. 08.Java Persistence API (JPA) Data Transfer Objects (DTOs)
Ventajas Desacopla la lgica del negocio del cliente y la mantiene
en la capa del negocio, esta separacin es un concepto clave en un
buen diseo. Reduce el trfico de red en sistemas distribuidos, los
objetos se pasan al ciente en una nica llamada remota Soluciona
posibles problemas de trficos con objetos que tengan ms datos que
los requeridos (columnas que almacenan varios bytes y relaciones
eager). Mejora el rendimiento del cliente al eliminar cualquier
necesidad de montar el modelo de datos. El desarrollador del
front-end del cliente no necesita conocer el modelo de datos.
Oculta el mapeo de la base de datos al cliente (data access tier) y
evita posibles problemas de seguridad. Evita la manipulacin directa
de los objetos que residen en la base de datos desde la capa de
presentacin Contras La necesidad de crear las clases DTO adems de
las clases JPA, lo que resulta en varios casos en duplicacin de
cdigo o simplemente escribir cdigo extra. Al modificar la
estructura de datos de la base de datos puede requerir que adems de
modificar las clases JPA se tenga que modificar las clases DTO y el
cdigo que copia los atributos del objeto DTO al JPA y viseversa
Data Transfer Objects Data Access Object (DAO) Pattern
52. 08.Java Persistence API (JPA) Java Persistence Query
Language (JPQL) Basado en SQL, permite escribir querys portables
Diferencia con Native Query Diferencia con EJBQL Usa un esquema
abstracto de entidades, incluyendo relaciones con otras entidades
de la misma Persitence Unit
53. 08.Java Persistence API (JPA) JPQL Querys createQuery
example Join example Aggregate Functions example Delete example
Update example
54. 08.Java Persistence API (JPA) Native Querys
createNativeQuery example Result in Object[]
55. 08.Java Persistence API (JPA) Named Querys createNamedQuery
example @NamedQuery example
56. 09.- Java Transaction API (JTA) Introduccin Conceptos
bsicos Atomicity: Operaciones que se ejecutan o fallan en conjunto
Locking and isolation: Una sola transaccin puede actualizar una
dato al mismo tiempo Flat transaction model: Solo una transaccin
tiene efecto en un mismo thread en un momento dado Transaction
scope Begin point Commit / Rollback point Flat Transaction model El
modelo que soporta Java EE No soporta subtransacciones Lo soportan
todos los vendedores de bases de datos Example of Atomic Unit of
Work Effect of Locking on Multiple Accesses to the Same Data
57. 09.- Java Transaction API (JTA) Local vs Distributed
Transactions Local = 1 DataSource Distributed = n DataSources
58. 09.- Java Transaction API (JTA) Programmatic vs Declarative
Transactions (1)
59. 09.- Java Transaction API (JTA) Programmatic vs Declarative
Transactions (2) Notas: De no especificar el tipo de
transaction-type se asume Declarative Programmatic Transactions no
se pueden cambiar en assembly time El contenedor no puede manejar
una combinacin de programmatic y declarative transactions
Programatic Bean-managed transactions (BMT) Declarative
Container-managed transactions (CMT)
60. 09.- Java Transaction API (JTA) Declarative Transactions
Attributes @TransactionAttribute define como el contenedor
administra la transaccin: El mtodo NO est en una transaccin El
mtodo SI est en una transaccin Container Interactions with the
Transaction Manager
61. 09.- Java Transaction API (JTA) Locking and Versioning
Tipos de bloqueos Pessimistic locking Bloqueos de filas o tablas
por largos perodos de tiempo para actualizacin Bloquea los datos
cuando se leen y los desbloquea cuando todas las actualizaciones se
efectuaron Cuando ms usuarios concurrentes mayor la posibilidad de
bloqueos Optimistic locking Trata de evitar bloqueos por largos
perodos de tiempo Los datos se pueden bloquear en la lectura o en
la escritura, pero no se mantienen bloqueados entre la lectura y la
escritura Puede ocurrir que un usuario sobre-escriba los cambios de
otro usuario Versionamiento La especificacin JPA adiciona nmeros de
versiones para evitar la sobre-escritura de datos cuando el
desarrollador lo habilita Puede usar una columna integer para
implementar versionamiento A Versioning Field in an Entity
Class
62. 10.- Message-Driven Beans Messaging systems Messaging
systems Permite la comunicacin asincrnica Promueve las relaciones
pear- to-pear entre los componentes de la aplicacin Mantiene un
alto grado de anonimidad entre los productores y consumidores de
mensajes Son escalables, confiables y permiten una fcil integracin
en redes heterogneas Java EE incluye la JMS API para implementar
mensajera Java Message Service (JMS) API Estandariza la forma de
enviar mensajes en Java Enterprise Messaging System JMS API
63. 10.- Message-Driven Beans Messaging Models Point-to-Point
Se basan en el concepto de una cola de mensajes (Queue) Una Queue
retiene los mensajes hasta que son consumidos En general existe un
nico consumidor para cada mensaje El cliente recibe todos los
mensajes de la Queue, aun los creados previos a la creacin del
consumidor La Queue elimina los mensajes que han sido leidos
exitosamente Si hay multiples consumidores solo un consumidor puede
leer cada mensaje Publish-Subscribe Se basa en el concepto de
Message Topics El productor de mensajes publica los mensajes en un
tpico especfico Los consumidores de mensajes se subscriben a tpicos
Un message-router redirecciona los mensajes a los subscriptores de
un topic El Topic retiene los mensajes hasta que ha sido consumidos
por todos sus subscriptores activos El consumidor solo recibe los
mensajes que fueron enviados despus de su subscripcin o mientras
est activo Publish/Subscribe Architecture Point-to-Point
Architecture
64. 10.- Message-Driven Beans Synchronous and Asynchronous
Messaging Synchronous and Asynchronous comparison
65. 10.- Message-Driven Beans Java Message Service (JMS) API
Caractersticas: La JMS API estandariza la forma de enviar mensajes
en Java EL JMS API es un conjunto de interfaces que el programador
puede asumir que han sido implementadas por un vendedor (JMS
provider) Un cliente JMS produce o consume mensajes Los clientes
JMS usan Connection Factories para conectarse a un destino JMS
Messaging System Participants
66. 10.- Message-Driven Beans Messages Estructura de un
mensaje: Header: Informacin estndar para identificacin y routeo del
mensaje Properties: Pares de nombre/valor que permiten filtrar los
mensajes y permiten la ineroperatividad con otros sistemas de
mensajes Body:Contiene el mensaje en uno de los formatos estndar
Message structure
67. 10.- Message-Driven Beans Message-Driven Beans
Caractersticas Los Message-Driven Beans fueron diseados para
trabajar como consumidores asincrnicos de mensajes El Bean
implementa la interface MessageListener El desarrollador del bean
es responsable de escribir el mtodo onMessage Los Message-Driven
Beans no tienen interfaces local ni remota Los clientes se
comunican con el Message-Driven bean enviando mensajes (queue o
topic) Queue javax.jms.QueueConnectionFactory Topic
javax.jms.TopicConnectionFactory Los Message-Driven bean son
annimos para los clientes y no tienen un estado asociado a los
clientes El contenedor puede crear un pool de mltiples instancias
de Message-Driven beans, y cuando un mensaje arriba el contenedor
elije la instancia Client View of a Message-Driven Bean Example of
messaging
68. 10.- Message-Driven Beans Message-Driven Beans Life Cicle
Message-Driven Bean Life Cycle Callback anotations @PostConstruct
@PreDestroy
69. 10.- Message-Driven Beans Send a message to a Queue Send a
message to a Queue example
70. 10.- Message-Driven Beans onMessage example Message-Driven
Bean example
73. 10.- Message-Driven Beans Additional message information
JMS Message Selectors Permite identificar que tipo de mensajes le
interesan al consumidor Basado en expresiones condicionales de
SQL92 El filtro lo realiza el JMS provider Acknowledge Mode
Auto-acknowledge (default) Automticamente realiza el acuse de
recibo si el cliente retorna exitosamente por cada mensaje
Dups-ok-acknowledge Acuse de recibo en modo tarda (cada n mensajes
o n segundos) Posibilidad de duplicacin del mensaje en caso de
prdida de comunicacin Puede reducir la sobrecarga minimizando la
cantidad de trabajo para prevenir mensajes duplicados Using message
header message selectors Setting message properties Specifying
message acknowledgement
74. 11 .-Web Services Model Introduccin Definicin Es un sistema
de software diseado para soportar el intercambio de datos entre
aplicaciones sobre una red basado en un conjunto de protocolos y
estndares. Un Web Service expone servicios remotos a aplicaciones
clientes. Caractersticas Plataforma independiente: No se requiere
ningn tipo particular de CPU, sistema operativo, o tipos de datos
para intercambio. Diseado para trabajar con diferentes tecnologas:
Hace uso de XML y HTTP Interoperable con diferentes lenguajes de
programacin: Es posible que el server y el cliente estn escritos en
diferentes lenguajes de programacin Comparacin Web Services vs.
EJBs remotos Utiliza UDDI (Universal Description, Discovery and
Integration) para publicar y buscar servicios en lugar de JNDI
Utiliza un archivo WSDL (Web Service Description Language) para
exponer la API del Web Service Utiliza SOAP (Simple Object Access
Protocol) sobre HTTP como protocolo de transporte para invocar
operaciones y obtener resultados en lugar de IIOP Usa XML para
serializar los objetos
75. 11 .-Web Services Model Java API for XML Web Services
(JAX-WS) La JAX-WS API es una especificacin que permite la ejecucin
de mtodos remotos usando un esquema de mensajes basados en XML
Caractersticas Reemplaza JAX-RPC (Java API for XML-based Remote
Process Communications), que es la especificacin original para
implementar Web Services en Java. Requiere un conocimiento mnimo o
nulo de XML y WSDL Utiliza JAXB (Java Architecture for XML binding)
para especificar como mapear tipos de datos usando XML. Utiliza
SAAJ (SOAP With Attachments API for Java) para enviar, recibir, y
parsear mensajes SOAP Usar JAX-WS en el cliente o en el servidor no
requiere que tambin se utilice del otro lado de la conexin Web
Service Endpoints Es un componente que se ejecuta en forma remota
como resultado de recibir un mensaje SOAP de un cliente y existen
dos tipos: Componentes JAX-WS servlet Componentes stateless session
beans
76. 11 .-Web Services Model JAX-WS Servlet Endpoints
Caractersticas Son multi-threaded No requieren un contenedor EJB
Servlet Endpoint example
77. 11 .-Web Services Model JAX-WS EJB Endpoints Caractersticas
En general es un session bean que tambin se utiliza dentro de la
aplicacin Es una forma sencilla de dar acceso a otras plataformas
para invocar componentes EJB Requiere un contenedor EJB EJB
Endpoint example
78. 11 .-Web Services Model Data Types Caractersticas Soporta
los tipos de datos bsicos de Java Para para pasar o retornar
instancias de objetos complejos se requiere cierta programacin
usando JAXB Using JAXB to convert Java object to / from XML
@XmlType annotation
79. 11 .-Web Services Model Web Service Clients Para acceder a
un web service el cliente JAX-WS necesita: Tener una copia del
archivo WSDL que describe operaciones, argumentos y valores de
retorno del Web Service. Este archivo permite crear las interfaces
del lado del cliente. Se puede generar y obtener el archivo WSDL
utilizando las herramientas wsgen y wsimport del Java SDK. Para
obtener el archivo WSDL desde GlassFish se puede usar el navegador
Web usando un URL similar al siguiente
http://localhost:8086/CursoWebApp1/ServletWebService?WSDL La
llamada al Web Service se hace a travs de un port y un objeto local
que actua como proxy para el servicio remoto. El objeto proxy
maneja la creacin de mensajes SOAP y la comunicacin HTTP En JAX-WS
el objeto proxy es conocido como Port Web Service Client
example
80. 12.- Security Policies Introduccin Java EE Security Model
La principal tarea es definir roles y crear declarative security
policy. Una policy que operaciones estn permitidas para
determinados grupos y usuarios. La security API se basa en un
modelo de seguridad gestionado por el contenedor. Conceptos
Authentication: El proceso de identificar el usuario.
Authorization: Determinar si un usuario tiene permitido realizar
una determinada operacin. Confidentiality: Proteccin de los datos
durante las transacciones. Tcnica de public-key. Integrity: El
proceso de asegurar que el dato recibido es el mismo dato que fue
enviado.
81. 12.- Security Policies End-to-End Security Model
Caractersticas Una vez que se establece la identificacin del
usuario para un componente esa identidad se propaga a otros
componentes Si un componente decide si el usuario tiene permisos
basado en un security role, otros componentes utilizan los mismos
security roles, dado que los roles se propagan entre contenedores
End-to-End Security Model
82. 12.- Security Policies Container-Managed Security Model
Caractersticas Si es necesario el contenedor autentifica el usuario
El contenedor verifica los permisos del ciente para realizar la
accin solicitada Si la autorizacin es correcta el contenedor invoca
el cdigo de la aplicacin. Security Policy Enforced by Web
Containers and EJB Containters
83. 12.- Security Policies Authentication Web Clients
authentication HTTP basic: El browser un usuario y clave y le enva
esta informacin al servidor. Client certificate: El cliente enva un
certificado digital en respuesta a una solicitud por parte del
servidor. Form-based: El desarrollador controla el look and feel
del proceso de autenticacin enviando forms HTML. Web tier to EJB
tier authentication El contenedor Web es responsable de pasar las
credenciales al cliente EJB. Non-Web Clients authentication Usar un
contenedor para la aplicacin cliente Authentication in the Web
Tier
84. 12.- Security Policies Role-Based Security Model User roles
y responsabilidades La estructura de roles el plana (no es
jerrquica). Un usuario puede tener mas de un role asociado. La
forma de mapear los usuarios o grupos a roles depende de la
plataforma especficica. Role-Based Java EE Security Model
85. 12.- Security Policies Role-Based Authorization Role-Based
Authorization in the Web Tier Role-Based Authorization in the EJB
Tier
86. 12.- Security Policies Usar la Security API Web-Tier
Security API EJB-Tier Security API
87. 12.- Security Policies Security API Clients HTML Login Page
for Form-Based Authentication HTTP Security and JAX-WS Clients