SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
EJBs
                          Enterprise JavaBeans




                              Que son los EJBs?

                      ¡   Enterprise JavaBeans (EJB) es una arquitectura de
                          componentes de servidor que simplifica el proceso de
                          construcción de aplicaciones de componentes
                          empresariales distribuidos en Java
                          l   Con su utilización es posible escribir aplicaciones
                              escalables, fiables y seguras sin escribir código de
                              infraestructura
                          l   La existencia de infraestructura permite un desarrollo
                              más rápido de la parte servidora
                      ¡   Dado que son componentes, permiten desarrollar
                          aplicaciones portables entre distintas plataformas (son
                          Java) y servidores de aplicaciones (especificación
                          estándar).




PDF Creator - PDF4Free v2.0                                      http://www.pdf4free.com
                                                                                           1
Enterprise JavaBeans
                          ¡   Un EJB es un componente software que se
                              ejecuta del lado del servidor en una aplicación
                              multicapa.
                          ¡   Los clientes del EJB acceden a él por medio de
                              una interfaz que esconde los detalles de
                              implementación del componente.
                          ¡   Esta interfaz debe cumplir la especificación
                              EJB.
                               l   La especificación fuerza la presencia de unos
                                   determinados métodos que permitirán al
                                   contenedor de EJBs manejar los componentes y su
                                   ciclo de vida.




                         Categorías de EJBs
                         ¡    3 tipos de Enterprise JavaBeans:
                              l    Entity Beans: representan entidades de
                                   negocio y proveen acceso a datos a través
                                   de métodos. Se basan en la idea del
                                   mapeo objeto/relacional
                              l    Session Beans: pensados para modelar
                                   procesos de negocio que son accedidos de
                                   manera síncrona
                              l    Message-driven Beans: pensados para
                                   modelar procesos de negocio que son
                                   accedidos de manera asíncrona,
                                   permiten el uso de JMS desde EJBs




PDF Creator - PDF4Free v2.0                                    http://www.pdf4free.com
                                                                                         2
Entity EJBs
                          ¡   Dos tipos:
                              l   BMP (Bean Managed Persistence)
                                   ¡ Se delega en el desarrollador las tareas de
                                     persistir, buscar y recuperar las entidades.
                              l   CPM (Container Managed Persistence)
                                   ¡ La persistencia la gestiona el contenedor de
                                     forma que el desarrollador no se preocupa de
                                     las sentencias SQL de inserción, recuperación,
                                     etc.
                          ¡   Un Entity EJB representa en cada
                              momento a una entidad en base de datos.
                              Muy académicos
                          ¡   Presentan problemas de rendimiento.




                          Session EJBs
                          ¡   Dos tipos:
                              l   Stateful (Con estado)
                                   ¡   El contenedor garantiza el mantenimiento
                                       del estado del componente entre distintas
                                       invocaciones (se serializan y deserializan)
                              l   Stateless (Sin estado)
                                   ¡   El contenedor de EJBs no garantiza que
                                       un mismo EJB guarde su estado entre dos
                                       invocaciones del mismo cliente. Son
                                       “pooleables” y más ligeros que los
                                       Stateful




PDF Creator - PDF4Free v2.0                                    http://www.pdf4free.com
                                                                                         3
Message Driven Beans

                          ¡   Incorporados en la especificación
                              2.0.
                          ¡   Pensados para mensajería
                              asíncrona.
                          ¡   Funcionan sobre JMS (manejo de
                              colas de mensajes, publish &
                              subscribe)
                          ¡   Interesantes para integración de
                              sistemas.




PDF Creator - PDF4Free v2.0                         http://www.pdf4free.com
                                                                              4
EJBs como Objetos distribuidos

                          ¡   Un objeto distribuido es un objeto
                              invocable desde un sistema remoto.




                          Middlewares.
                          ¡   Herramientas que proporcionan servicios para el
                              desarrollo de sistemas distribuidos.
                              l   Ej, los ORBs CORBA
                          ¡   Clasificación:
                              l   Presencia explícita:
                                   ¡   El componente de negocio necesita realizar
                                       invocaciones explícitas a la API del middleware.
                                   ¡   Difícil de desarrollar y mantener
                                   ¡   Ej: CORBA, TUXEDO, DCOM, RMI, RPCs, etc.
                              l   Presencia implícita:
                                   ¡   La interacción con las APIs no la realiza el
                                       componente de negocio desarrollado, sino que la
                                       gestiona el middleware al que se le solicitan los
                                       servicios de forma declarativa (configuración,
                                       descriptores de servicios, etc.).
                                   ¡   Ej: EJBs, CCM, .NET, etc.




PDF Creator - PDF4Free v2.0                                         http://www.pdf4free.com
                                                                                              5
Middlewares Explícitos




                          Middlewares implícitos




PDF Creator - PDF4Free v2.0                    http://www.pdf4free.com
                                                                         6
Estructura EJB
                          ¡   Un EJB no es una sola clase, sino un
                              conjunto de clases, interfaces y recursos:
                              l   El bean de empresa o bean de negocio
                                  (Enterprise Bean)
                              l   El EJB Object
                              l   Las interfaces Remotas.
                              l   El Objeto Home
                              l   Los interfaces Locales
                              l   Descriptores de Despliegue
                              l   Recursos específicos del servidor de
                                  aplicaciones concreto que estemos empleando.




                          El Bean de Empresa o Negocio
                          ¡   Se trata de implementación en sí del objeto
                              distribuido. Dependiendo del tipo de EJB, esto
                              será…
                              l   Implementación de reglas de negocio en el caso de
                                  EJBs de sesión.
                              l   Lógica de persistencia en el caso de los Entity EJBs.
                              l   Lógica de negocio orientadas a mensajes.
                          ¡   La especificación determina que estas clases
                              deben cumplir una serie de interfaces.
                              l   Javax.ejb.EnterpriseBean – Esta interfaz funciona
                                  únicamente como marca para que el contenedor
                                  sepa que realmente se trata de un EJB. Extiende
                                  Serializable.
                              l   Cada tipo de EJB cuenta con un interfaz más
                                  específico que extiende al de EnterpriseBean.




PDF Creator - PDF4Free v2.0                                      http://www.pdf4free.com
                                                                                           7
El EJB Object
                          ¡   Representa la capa de indirección que intercepta
                              las invocaciones remotas al EJB y gestiona los
                              servicios implícitos del contenedor de ejbs.
                          ¡   Objeto inteligente que implementa la lógica
                              intermedia que el contenedor de EJBs requiere
                              antes de que una invocación a método sea
                              servida por el bean de negocio.
                          ¡   Forman parte del contenedor de EJBs.
                          ¡   Se generan mediante las herramientas facilitadas
                              por cada contenedor de EJBs.




                          El EJB Object




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      8
Las interfaces Remotas
                          ¡   Son los contratos entre el cliente del EJB y el
                              bean de negocio.
                          ¡   Están sujetas a la especificación y deben cumplir
                              ciertas reglas.
                              l   Ej, Todas deben extender la interfaz
                                  javax.ejb.EJBObject
                          ¡   En la interfaz remota se publican todos los
                              métodos del bean de negocio que se quieran
                              invocar remotamente.
                          ¡   La interfaz remota es implementada por el EJB
                              Object, el cual es generado automáticamente por
                              el contenedor de EJBs.




                          El Objeto Home
                          ¡   El cliente no puede instanciar directamente un
                              objeto remoto, dado que se encuentran en otra
                              máquina distinta.
                          ¡   Debido al principio de transparencia, la ubicación
                              del cliente es independiente de la localización del
                              objeto remoto.
                          ¡   Las instancias de EJBs se obtienen por medio de
                              factorías de objetos (Patrón de diseño Factory
                              [GOF94]).
                          ¡   La factoría es la responsable de instanciar, buscar
                              y destruir los objetos.
                          ¡   Él objeto home es la factoría para la obtención
                              de referencias a EJBs.




PDF Creator - PDF4Free v2.0                                     http://www.pdf4free.com
                                                                                          9
La interfaz Home
                          ¡   Los objetos home son propios y específicos de cada
                              fabricante de contenedores, son autogenerados y
                              forman parte del contenedor.
                          ¡   El desarrollador debe aportar una interfaz java que
                              extienda la interfaz javax.ejb.EJBHome




                          Las interfaces locales
                          ¡   Añadidas en la versión 2.0 de la especificación EJB.
                          ¡   Solventan el problema de la sobrecarga cuando el EJB
                              se ejecuta en la propia máquina del cliente.
                          ¡   Permiten invocar al EJB como si se tratara de un objeto
                              local, tratando con un Objeto Local.
                          ¡   El Objeto Local realiza las tareas de middleware que le
                              corresponderían al EJB Object, y luego le cede el
                              control al bean de negocio.
                          ¡   De esta forman, se evitan las tareas propias a la
                              invocación remota (strubs, serialización, etc.).
                          ¡   Son opcionales
                          ¡   Extienden la interfaz javax.ejb.EJBLocalObject y su
                              factoría javax.ejb.EJBLocalHome.




PDF Creator - PDF4Free v2.0                                     http://www.pdf4free.com
                                                                                          10
Las interfaces locales
                          ¡   Efectos laterales de su uso…
                              l   Si queremos distribuir el objeto, es necesario
                                  tocar el código fuente, puesto que manejamos
                                  interfaces distintas.
                              l   Las interfaces locales, en pos del máximo
                                  rendimiento, manejan paso de parámetros por
                                  referencia en lugar de por valor. Esto implica un
                                  cambio importante en la semántica del código y es
                                  una fuente importante de errores.
                          ¡   En consecuencia es interesante emplear el patrón
                              business delegate y resolver el servicio por medio
                              de configuración externalizada (XML, BBDD, etc).




                          Descriptores de Despliegue
                          ¡   Especifica las propiedades y servicios del EJB de
                              forma declarativa.
                          ¡   Describe como ha de ser desplegado el EJB en el
                              contenedor, y como ha de ser manejado:
                              l   Ciclo de vida
                              l   Sistema de persistencia
                              l   Control de transacciones
                              l   Servicios de seguridad.
                          ¡   Es un fichero XML: ejb-jar.xml
                          ¡   Habrá uno por paquete de despliegue (fichero
                              jar) y puede declarar varios EJBs de distintos
                              tipos.




PDF Creator - PDF4Free v2.0                                    http://www.pdf4free.com
                                                                                         11
Recursos específicos del servidor
                           de aplicaciones
                           ¡   Ficheros propios del servidor
                           ¡   Fuera del estándar J2EE
                           ¡   Cada servidor describe y exige, por ejemplo, su
                               propio descriptor de despliegue (además del ejb-
                               jar.xml).
                           ¡   Normalmente, los servidores de aplicaciones
                               facilitan herramientas para realizar el despliegue
                               y confeccionar los descriptores.




                           Empaquetado de EJBs


                    ¡   Se realiza
                        en ficheros
                        JAR
                    ¡   Uno o más
                        EJBs por
                        cada JAR




PDF Creator - PDF4Free v2.0                                   http://www.pdf4free.com
                                                                                        12
Desarrollo EJBs
                        Hola Mundo!
                        Como se haría con EJB
                        2.0




                          Pasos a seguir…
                          ¡   Escribir las clases java necesarias:
                              l   Interfaces local (opcional) y remota
                              l   La clase del bean de negocio
                              l   El interfaz home
                          ¡   Escribir el descriptor de despliegue, y el
                              propio del contenedor en caso de que
                              fuera necesario.
                          ¡   Compilar las clases java.
                          ¡   Desplegar el JAR en el contendor.
                          ¡   Desarrollar un programa cliente para
                              comprobar el funcionamiento.




PDF Creator - PDF4Free v2.0                                   http://www.pdf4free.com
                                                                                        13
Desarrollo de la interfaz remota….
                          ¡   La interfaz remota contiene todos los
                              métodos de negocio del bean
                          ¡   Consideraciones
                              l   Extiende javax.ejb.EJBObject
                              l   Los métodos de negocio que publiquemos en la
                                  interfaz remota deben lanzar la excepción
                                  java.rmi.RemoteException.
                          ¡   Pasos:
                              l   Creamos en un directorio vacío el fichero
                                  HolaMundo.java a mano, con el notepad.
                              l   Publicamos el método saludo que recibe un
                                  String (nombre) y retorna otro String.




                          Desarrollo de la interfaz remota…




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      14
Desarrollo de la interfaz local….
                          ¡   La interfaz local también contiene los
                              métodos de negocio del bean
                          ¡   Consideraciones
                              l   Extiende javax.ejb.EJBLocalObject
                              l   Los métodos de negocio que publiquemos en la
                                  interfaz local no tienen porqué lanzar la
                                  excepción java.rmi.RemoteException.
                          ¡   Pasos:
                              l   Creamos en un directorio vacío el fichero
                                  HolaMundoLocal.java.
                              l   Publicamos el método saludo que recibe un
                                  String (nombre) y retorna otro String.




                          Desarrollo de la interfaz local…




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      15
Desarrollo del interfaz Home…
                          ¡   El interfaz home describe la factoría de EJBs.
                          ¡   Tiene métodos para crear y destruir objetos EJB
                          ¡   La implementación de la interfaz es el objeto
                              home, y será generada por las herramientas del
                              contenedor.
                          ¡   Consideraciones:
                              l   El método create es el método que los clientes
                                  deben emplear para obtener una referencia al EJB.
                                  Se emplea para inicializar el bean.
                              l   Lanza java.rmi.RemoteException y
                                  java.ejb.CreateException.
                              l   Extiende javax.ejb.EJBHome
                          ¡   Pasos:
                              l   Crear el fichero HolaMundoHome.java para la
                                  interfaz que extienda javax.ejb.EJBHome
                              l   Publicar el método HolaMundo create() que lance
                                  ambas excepciones.




                          Desarrollo del interfaz Home…




PDF Creator - PDF4Free v2.0                                    http://www.pdf4free.com
                                                                                         16
Desarrollo del interfaz Home Local
                          ¡   Las diferencias con el interfaz Home son,
                              l   La interfaz local extiende EJBLocalHome en
                                  lugar de EJBHome.
                              l   El método create ya no tiene porqué lanzar
                                  una RemoteException.
                          ¡   El objeto devuelto por el método create
                              será del tipo HolaMundoLocal, es decir,
                              un objeto no remoto que cumple la
                              interfaz Local que acabamos de definir.




                          Desarrollo del interfaz Home Local




PDF Creator - PDF4Free v2.0                                  http://www.pdf4free.com
                                                                                       17
Desarrollo del bean de negocio
                          ¡   Creamos el fichero HolaMundoBean.java
                          ¡   La clase debe implementar javax.ejb.SessionBean
                          ¡   Métodos obligatorios:
                              l   public void ejbActivate() {}
                              l   public void ejbPassivate() {}
                              l   public void setSessionContext(javax.ejb.SessionContext
                                  context){}
                              l   public void unsetSessionContext() {}
                              l   public void ejbRemove() {}
                              l   public void ejbCreate() {} que lanza una
                                  javax.ejb.CreateException
                          ¡   Y el método de negocio…
                              l   public String saludo (String mensaje) {return “Hola
                                  mundo “+mensaje;}




                          Desarrollo del bean de negocio




PDF Creator - PDF4Free v2.0                                         http://www.pdf4free.com
                                                                                              18
El contexto de los EJBs
                        ¡   El contenedor nos facilita     Bean       Contexto
                            el contexto invocando el
                            método
                            setSessionContext( … );
                                                          Session     SessionCont
                        ¡   Es la vía de comunicación      Bean           ext
                            entre los EJBs y el
                            contenedor
                        ¡   A través del contexto        EntityBean   EntityContex
                            podemos recuperar                               t
                            información del
                            contenedor de EJBs (ej,       Message     MessageDriv
                            credenciales de                Driven      enContext
                            seguridad), modificar su       Beans
                            status, manejar
                            transacciones, etc.




                            El contexto de los EJBs




PDF Creator - PDF4Free v2.0                                  http://www.pdf4free.com
                                                                                       19
Generar el descriptor de
                          despliegue ejb-jar.xml
                          ¡   Describe el despliegue que el contenedor ha de hacer
                              con los EJBs del jar.
                          ¡   Uno por cada fichero jar.
                          ¡   Lo metemos en el directorio META-INF.
                          ¡   Permiten especificar atributos de los beans de forma
                              declarativa en lugar de por programa.
                          ¡   Deberemos declarar para nuestro bean:
                              l   ejb-name: es el nick del ejb.
                              l   home: nombre cualificado completo de la interfaz Home
                                  del bean.
                              l   remote: nombre cualificado completo de la interfaz
                                  remota.
                              l   local-home: nombre cualificado completo de la interfaz
                                  Home local.
                              l   local: nombre cualificado completo de la interfaz local
                              l   ejb-class : nombre cualificado completo del bean de
                                  negocio
                              l   session-type: Statefull/Stateless
                              l   transaction-type: Container




                          Ejb-jar.xml
                          <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD
                             Enterprise
                          JavaBeans 2.0//EN" " http://java.sun.com/dtd/ejb-
                             jar_2_0.dtd">
                          <ejb-jar>
                             <enterprise-beans>
                                  <session>
                                          <ejb-name>HolaMundo</ejb-name>
                                          <home>HolaMundoHome</home>
                                          <remote>HolaMundo</remote>
                                          <local-home>HolaMundoLocalHome</local-
                             home>
                                          <local>HolaMundoLocal</local>
                                          <ejb-class>HolaMundoBean</ejb-class>
                                          <session-type>Stateless</session-type>
                                          <transaction-type>Container</transaction-
                             type>
                                  </session>
                             </enterprise-beans>
                          </ejb-jar>




PDF Creator - PDF4Free v2.0                                         http://www.pdf4free.com
                                                                                              20
Descriptor de despliegue de jboss.
                          Jboss.xml
                          ¡   También en el directorio META-INF.
                          <?xml version="1.0" encoding="UTF-8"?>
                          <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN"
                            "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
                          <jboss>
                            <enterprise-beans>
                              <session>
                                <ejb-name>HolaMundo</ejb-name>
                                <jndi-name>HolaMundo</jndi-name>
                              </session>
                            </enterprise-beans>
                            <resource-managers>
                            </resource-managers>
                          </jboss>




                          Construcción del JAR
                         ¡    Compilamos las clases java.
                         ¡    Invocamos
                                          jar cf HolaMundo.jar *
                         ¡    El * indica que clases queremos meter dentro del
                              JAR.
                         ¡    Arrancamos jboss ejecutando run en el directorio
                              bin
                         ¡    Copiamos el jar al directorio deploy/default
                         ¡    Comprobamos en la ventana de comandos de
                              JBOSS el despliegue de HolaMundo.jar
                         ¡    Comprobamos en la consola jmx que el EJB está
                              publicado.




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      21
Invocación de EJBs
                          ¡    Hay dos posibles tipos de clientes para
                               invocar a un EJB:
                               l   Clientes Java RMI-IIOP.
                                    ¡ Se sirven de JNDI para localizar a través de la
                                      red los objetos que requieren, y de la JTA
                                      (Java Transaction API) para el control de las
                                      transacciones.
                               l   Cliente CORBA
                                    ¡ Los clientes pueden ser aplicaciones CORBA
                                      estándar.
                                    ¡ Esto permite la invocación de un EJB desde
                                      otro lenguaje distinto como C++.
                                    ¡ Emplean COS Naming (Servicio de nombrado
                                      de CORBA) para localizar objetos, y CORBA
                                      OTS para el control del transacciones.




                          Pasos del cliente…
                          ¡    Para invocar a un EJBs, tanto en clientes
                               CORBA como RMI-IIOP:
                          1.   Localizar el objeto Home o factoría
                          2.   Emplear el objeto Home para obtener
                               una referencia remota al EJB
                          3.   Invocar los métodos del negocio del EJB
                          4.   Liberar el EJB




PDF Creator - PDF4Free v2.0                                     http://www.pdf4free.com
                                                                                          22
Invocación del EJB. Localización
                          del Home
                          ¡ El cliente no tiene porqué conocer la
                            localización del objeto Home
                          ¡ Lo localiza por medio de un servicio de
                            nombrado o servicio de directorio al que
                            accede por medio de JNDI
                          ¡ Esto aumenta la portabilidad del cliente …
                          … aunque siempre tendremos que saber la
                            localización del árbol JNDI.




                          Invocación del EJB




PDF Creator - PDF4Free v2.0                           http://www.pdf4free.com
                                                                                23
Invocación del EJB
                          ¡   Inicializamos el contexto inicial…
                              Hashtable props = new Hashtable();
                              props.put(InitialContext.INITIAL_CONTEXT_FACTORY
                                    ,"org.jnp.interfaces.NamingContextFactory");
                              props.put(InitialContext.PROVIDER_URL,
                                    "jnp://127.0.0.1:1099");
                              InitialContext initialContext = new
                              InitialContext(props);
                          ¡   Y localizamos el objeto home…
                              HolaMundoHome home =
                                        (HolaMundoHome) initialContext.lookup(
                              "HolaMundo" );




                          Invocación del EJB
                          ¡   Ya podemos crear el EJB a partir de la
                              factoría e invocar su método de negocio.
                              //Obtenemos la referencia al EJB de la factoría...
                              HolaMundo holaMundo = home.create();

                              //Ya podemos invocar el método de negocio...
                              System.out.println( holaMundo.saludo("Homer
                              Simpson"));




PDF Creator - PDF4Free v2.0                                      http://www.pdf4free.com
                                                                                           24
Y la invocación a través de la
                          interfaz Local?
                          ¡   Si estamos en la misma máquina …
                                  … porqué no funciona?
                               La interfaz local sólo puede ser empleada
                              para acceder a un EJB si el cliente se
                              encuentra en la misma máquina virtual
                              (JVM) que el EJB, no en la misma
                              máquina física.
                              Por ejemplo, un EJB puede invocar a otro
                              EJB del mismo contenedor por medio de
                              su interfaz local.




                          Ahora ... EJB 3.0
                          ¡   Objetivos de J2EE: Desarrollo rápido y productivo
                              de componentes de negocio
                          ¡   EJBs 2.x:
                               l Demasiado complicados de desarrollar

                               l Ejb-jar sobrecargado

                          ¡   EJB 3.0: Incorpora o se aprovecha de dos nuevos
                              modelos:
                               l Metadatos de Java (incorporados en la versión
                                 1.5)
                               l Modelo de persistencia Hibernate.




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      25
Anotaciones EJB
                          ¡   En EJB 3.0 se reducen considerablemente las
                              tareas que el desarrollador del bean debe realizar
                          ¡   EJB 3.0 todos los beans son POJOs con
                              anotaciones EJB.
                          ¡   Mediante anotaciones:
                               l Se define el interfaz del bean

                               l El mapeo O/R

                               l Referencias a recursos.

                               l Cualquier cosa que antes poníamos en los
                                 descriptores.
                          ¡   El descriptor desaparece, junto con las interfaces
                              home.




                          Nuevo sistema de persistencia

                                    ((POJO + anotaciones) +
                                   EntityManager ) asociado a un
                                      contexto de persistencia

                          ¡   Relaciones en los entity beans:
                              l   Especificadas también mediante
                                  anotaciones.




PDF Creator - PDF4Free v2.0                                  http://www.pdf4free.com
                                                                                       26
Stateless Session Beans
                          import javax.ejb.*;

                              @Stateless
                              @Remote
                              public class HolaMundoBean
                              {
                                 public String saludo(String
                              mensaje) {
                                    return "Hola “+mensaje;
                                 }
                              }




                          Message Driven Beans

                          ¡   Es el único que está obligado a
                              cumplir una interfaz concreta:
                                 ¡   javax.jms.MessageListener
                          ¡   No implican cambios significativos




PDF Creator - PDF4Free v2.0                              http://www.pdf4free.com
                                                                                   27
Entity Beans
                          ¡   Se declaran mediante @Entity.
                          ¡   Todas los atributos son persistentes salvo
                              los marcados como @Transient.
                          @Entity public class Order {
                           private Long id;
                           private int version;
                           @Id(generate=AUTO)
                           public Long getId() { return id; }
                           public void setId(Long id) { this.id = id; }
                          @Version
                           protected int getVersion() { return version; }
                           protected void setVersion(int version) {
                           this.version = version;
                          …




                          Relaciones
                          ¡   Unidireccionales o bidireccionales
                          ¡   Cualquier combinación de
                              cardinalidad.
                          @ManyToOne
                           public Customer getCustomer() { return
                           cust; }
                           public setCustomer(Customer cust) {
                           this.cust = cust; }




PDF Creator - PDF4Free v2.0                               http://www.pdf4free.com
                                                                                    28
Mapeo O/R

                          ¡   Inspirado en Hibernate
                          ¡   El mapeo a las columnas de la tabla
                              se especifica así mismo mediante
                              anotaciones
                          ¡   Eliminan es esquema abstracto de
                              datos.




                          EJBQL
                          ¡   Las queries se definen mediante
                              @NamedQuery con name y queryString.
                          ¡   Las queries se manejan por medio del
                              EntityManager:
                          @NamedQuery(
                           name="findAllCustomersWithName",
                           queryString="SELECT c FROM Customer c WHERE
                           c.name LIKE :custName"
                           )
                           .. ..
                           @Inject public EntityManager em;
                           customers =
                           em.createNamedQuery("findAllCustomersWithNa
                           me").setParameter("custName",
                           "Smith").listResults();




PDF Creator - PDF4Free v2.0                           http://www.pdf4free.com
                                                                                29
EJBQL
                          ¡   Ampliaciones:
                              l   Inner & outer joins.
                              l   Creación de clases como resultado de
                                  consultas.
                              l   SELECT new CustomerDetails(c.id,
                                  c.status, o.count)
                                         FROM Customer c JOIN c.orders o
                                         WHERE o.count > 100
                              l   GROUP BY & HAVING
                              l   Consultas anidadas en la cláusula WHERE…




                          Seguridad y Transacciones

                          ¡   También mediante atributos:
                              l   @TransactionAttribute
                              l   @MethodPermissions.
                          ¡   Excepciones:
                              l   Se eliminan las excepciones impuestas
                                  hasta ahora por la especificación;:
                                   ¡   CreateException
                                   ¡   FinderException




PDF Creator - PDF4Free v2.0                                 http://www.pdf4free.com
                                                                                      30
Despliegue EJB 3.0




PDF Creator - PDF4Free v2.0                    http://www.pdf4free.com
                                                                         31

Más contenido relacionado

Similar a Introducción a Enterprise Java Beans

Similar a Introducción a Enterprise Java Beans (20)

J2ee
J2eeJ2ee
J2ee
 
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, PrimefacesSeminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
Seminario de programación Java, con Apache Maven, J2EE, JPA, Primefaces
 
01 jee5-componentes
01 jee5-componentes01 jee5-componentes
01 jee5-componentes
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Guia ejb deshabdig
Guia ejb deshabdigGuia ejb deshabdig
Guia ejb deshabdig
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Clase 14 intro ej bs
Clase 14  intro ej bsClase 14  intro ej bs
Clase 14 intro ej bs
 
spring
springspring
spring
 
Sesion03 apuntes
Sesion03 apuntesSesion03 apuntes
Sesion03 apuntes
 
Jmx mbean-hsql
Jmx mbean-hsqlJmx mbean-hsql
Jmx mbean-hsql
 
Arquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EEArquitectura y diseño de aplicaciones Java EE
Arquitectura y diseño de aplicaciones Java EE
 
Capitulo xiv expectativasparaunambientededesarrollo
Capitulo xiv expectativasparaunambientededesarrolloCapitulo xiv expectativasparaunambientededesarrollo
Capitulo xiv expectativasparaunambientededesarrollo
 
JEE 5 - EJB3
JEE 5 - EJB3JEE 5 - EJB3
JEE 5 - EJB3
 
Reutilizacion de componentes en sistemas
Reutilizacion de componentes en sistemas Reutilizacion de componentes en sistemas
Reutilizacion de componentes en sistemas
 
Bpel y Open Esb
Bpel y Open EsbBpel y Open Esb
Bpel y Open Esb
 
Charla Ejbs
Charla EjbsCharla Ejbs
Charla Ejbs
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Introducción a Spring framework
Introducción a Spring frameworkIntroducción a Spring framework
Introducción a Spring framework
 
01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf01_ppt_introduccion_spring_mmmmmmmmm.pdf
01_ppt_introduccion_spring_mmmmmmmmm.pdf
 
Ibm message broker basic
Ibm message broker basicIbm message broker basic
Ibm message broker basic
 

Más de Salvador Fernández Fernández

Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónSalvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNSalvador Fernández Fernández
 

Más de Salvador Fernández Fernández (20)

Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Web services
Web servicesWeb services
Web services
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Práctica nominas
Práctica nominasPráctica nominas
Práctica nominas
 
Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra función
 
Ejemplo usopunteros
Ejemplo usopunterosEjemplo usopunteros
Ejemplo usopunteros
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Colorear fotografias en blanco y negro
Colorear fotografias en blanco y negroColorear fotografias en blanco y negro
Colorear fotografias en blanco y negro
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
Wallpaper natural
Wallpaper naturalWallpaper natural
Wallpaper natural
 
SQL
SQLSQL
SQL
 
Cableado Estructurado de Red
Cableado Estructurado de RedCableado Estructurado de Red
Cableado Estructurado de Red
 
Redes De Computadores UOC
Redes De Computadores UOCRedes De Computadores UOC
Redes De Computadores UOC
 
Fundamentos Divide Y Venceras
Fundamentos Divide Y VencerasFundamentos Divide Y Venceras
Fundamentos Divide Y Venceras
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
 

Último

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxlosdiosesmanzaneros
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilJuanGallardo438714
 

Último (15)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 

Introducción a Enterprise Java Beans

  • 1. EJBs Enterprise JavaBeans Que son los EJBs? ¡ Enterprise JavaBeans (EJB) es una arquitectura de componentes de servidor que simplifica el proceso de construcción de aplicaciones de componentes empresariales distribuidos en Java l Con su utilización es posible escribir aplicaciones escalables, fiables y seguras sin escribir código de infraestructura l La existencia de infraestructura permite un desarrollo más rápido de la parte servidora ¡ Dado que son componentes, permiten desarrollar aplicaciones portables entre distintas plataformas (son Java) y servidores de aplicaciones (especificación estándar). PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 1
  • 2. Enterprise JavaBeans ¡ Un EJB es un componente software que se ejecuta del lado del servidor en una aplicación multicapa. ¡ Los clientes del EJB acceden a él por medio de una interfaz que esconde los detalles de implementación del componente. ¡ Esta interfaz debe cumplir la especificación EJB. l La especificación fuerza la presencia de unos determinados métodos que permitirán al contenedor de EJBs manejar los componentes y su ciclo de vida. Categorías de EJBs ¡ 3 tipos de Enterprise JavaBeans: l Entity Beans: representan entidades de negocio y proveen acceso a datos a través de métodos. Se basan en la idea del mapeo objeto/relacional l Session Beans: pensados para modelar procesos de negocio que son accedidos de manera síncrona l Message-driven Beans: pensados para modelar procesos de negocio que son accedidos de manera asíncrona, permiten el uso de JMS desde EJBs PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 2
  • 3. Entity EJBs ¡ Dos tipos: l BMP (Bean Managed Persistence) ¡ Se delega en el desarrollador las tareas de persistir, buscar y recuperar las entidades. l CPM (Container Managed Persistence) ¡ La persistencia la gestiona el contenedor de forma que el desarrollador no se preocupa de las sentencias SQL de inserción, recuperación, etc. ¡ Un Entity EJB representa en cada momento a una entidad en base de datos. Muy académicos ¡ Presentan problemas de rendimiento. Session EJBs ¡ Dos tipos: l Stateful (Con estado) ¡ El contenedor garantiza el mantenimiento del estado del componente entre distintas invocaciones (se serializan y deserializan) l Stateless (Sin estado) ¡ El contenedor de EJBs no garantiza que un mismo EJB guarde su estado entre dos invocaciones del mismo cliente. Son “pooleables” y más ligeros que los Stateful PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 3
  • 4. Message Driven Beans ¡ Incorporados en la especificación 2.0. ¡ Pensados para mensajería asíncrona. ¡ Funcionan sobre JMS (manejo de colas de mensajes, publish & subscribe) ¡ Interesantes para integración de sistemas. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 4
  • 5. EJBs como Objetos distribuidos ¡ Un objeto distribuido es un objeto invocable desde un sistema remoto. Middlewares. ¡ Herramientas que proporcionan servicios para el desarrollo de sistemas distribuidos. l Ej, los ORBs CORBA ¡ Clasificación: l Presencia explícita: ¡ El componente de negocio necesita realizar invocaciones explícitas a la API del middleware. ¡ Difícil de desarrollar y mantener ¡ Ej: CORBA, TUXEDO, DCOM, RMI, RPCs, etc. l Presencia implícita: ¡ La interacción con las APIs no la realiza el componente de negocio desarrollado, sino que la gestiona el middleware al que se le solicitan los servicios de forma declarativa (configuración, descriptores de servicios, etc.). ¡ Ej: EJBs, CCM, .NET, etc. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 5
  • 6. Middlewares Explícitos Middlewares implícitos PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 6
  • 7. Estructura EJB ¡ Un EJB no es una sola clase, sino un conjunto de clases, interfaces y recursos: l El bean de empresa o bean de negocio (Enterprise Bean) l El EJB Object l Las interfaces Remotas. l El Objeto Home l Los interfaces Locales l Descriptores de Despliegue l Recursos específicos del servidor de aplicaciones concreto que estemos empleando. El Bean de Empresa o Negocio ¡ Se trata de implementación en sí del objeto distribuido. Dependiendo del tipo de EJB, esto será… l Implementación de reglas de negocio en el caso de EJBs de sesión. l Lógica de persistencia en el caso de los Entity EJBs. l Lógica de negocio orientadas a mensajes. ¡ La especificación determina que estas clases deben cumplir una serie de interfaces. l Javax.ejb.EnterpriseBean – Esta interfaz funciona únicamente como marca para que el contenedor sepa que realmente se trata de un EJB. Extiende Serializable. l Cada tipo de EJB cuenta con un interfaz más específico que extiende al de EnterpriseBean. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 7
  • 8. El EJB Object ¡ Representa la capa de indirección que intercepta las invocaciones remotas al EJB y gestiona los servicios implícitos del contenedor de ejbs. ¡ Objeto inteligente que implementa la lógica intermedia que el contenedor de EJBs requiere antes de que una invocación a método sea servida por el bean de negocio. ¡ Forman parte del contenedor de EJBs. ¡ Se generan mediante las herramientas facilitadas por cada contenedor de EJBs. El EJB Object PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 8
  • 9. Las interfaces Remotas ¡ Son los contratos entre el cliente del EJB y el bean de negocio. ¡ Están sujetas a la especificación y deben cumplir ciertas reglas. l Ej, Todas deben extender la interfaz javax.ejb.EJBObject ¡ En la interfaz remota se publican todos los métodos del bean de negocio que se quieran invocar remotamente. ¡ La interfaz remota es implementada por el EJB Object, el cual es generado automáticamente por el contenedor de EJBs. El Objeto Home ¡ El cliente no puede instanciar directamente un objeto remoto, dado que se encuentran en otra máquina distinta. ¡ Debido al principio de transparencia, la ubicación del cliente es independiente de la localización del objeto remoto. ¡ Las instancias de EJBs se obtienen por medio de factorías de objetos (Patrón de diseño Factory [GOF94]). ¡ La factoría es la responsable de instanciar, buscar y destruir los objetos. ¡ Él objeto home es la factoría para la obtención de referencias a EJBs. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 9
  • 10. La interfaz Home ¡ Los objetos home son propios y específicos de cada fabricante de contenedores, son autogenerados y forman parte del contenedor. ¡ El desarrollador debe aportar una interfaz java que extienda la interfaz javax.ejb.EJBHome Las interfaces locales ¡ Añadidas en la versión 2.0 de la especificación EJB. ¡ Solventan el problema de la sobrecarga cuando el EJB se ejecuta en la propia máquina del cliente. ¡ Permiten invocar al EJB como si se tratara de un objeto local, tratando con un Objeto Local. ¡ El Objeto Local realiza las tareas de middleware que le corresponderían al EJB Object, y luego le cede el control al bean de negocio. ¡ De esta forman, se evitan las tareas propias a la invocación remota (strubs, serialización, etc.). ¡ Son opcionales ¡ Extienden la interfaz javax.ejb.EJBLocalObject y su factoría javax.ejb.EJBLocalHome. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 10
  • 11. Las interfaces locales ¡ Efectos laterales de su uso… l Si queremos distribuir el objeto, es necesario tocar el código fuente, puesto que manejamos interfaces distintas. l Las interfaces locales, en pos del máximo rendimiento, manejan paso de parámetros por referencia en lugar de por valor. Esto implica un cambio importante en la semántica del código y es una fuente importante de errores. ¡ En consecuencia es interesante emplear el patrón business delegate y resolver el servicio por medio de configuración externalizada (XML, BBDD, etc). Descriptores de Despliegue ¡ Especifica las propiedades y servicios del EJB de forma declarativa. ¡ Describe como ha de ser desplegado el EJB en el contenedor, y como ha de ser manejado: l Ciclo de vida l Sistema de persistencia l Control de transacciones l Servicios de seguridad. ¡ Es un fichero XML: ejb-jar.xml ¡ Habrá uno por paquete de despliegue (fichero jar) y puede declarar varios EJBs de distintos tipos. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 11
  • 12. Recursos específicos del servidor de aplicaciones ¡ Ficheros propios del servidor ¡ Fuera del estándar J2EE ¡ Cada servidor describe y exige, por ejemplo, su propio descriptor de despliegue (además del ejb- jar.xml). ¡ Normalmente, los servidores de aplicaciones facilitan herramientas para realizar el despliegue y confeccionar los descriptores. Empaquetado de EJBs ¡ Se realiza en ficheros JAR ¡ Uno o más EJBs por cada JAR PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 12
  • 13. Desarrollo EJBs Hola Mundo! Como se haría con EJB 2.0 Pasos a seguir… ¡ Escribir las clases java necesarias: l Interfaces local (opcional) y remota l La clase del bean de negocio l El interfaz home ¡ Escribir el descriptor de despliegue, y el propio del contenedor en caso de que fuera necesario. ¡ Compilar las clases java. ¡ Desplegar el JAR en el contendor. ¡ Desarrollar un programa cliente para comprobar el funcionamiento. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 13
  • 14. Desarrollo de la interfaz remota…. ¡ La interfaz remota contiene todos los métodos de negocio del bean ¡ Consideraciones l Extiende javax.ejb.EJBObject l Los métodos de negocio que publiquemos en la interfaz remota deben lanzar la excepción java.rmi.RemoteException. ¡ Pasos: l Creamos en un directorio vacío el fichero HolaMundo.java a mano, con el notepad. l Publicamos el método saludo que recibe un String (nombre) y retorna otro String. Desarrollo de la interfaz remota… PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 14
  • 15. Desarrollo de la interfaz local…. ¡ La interfaz local también contiene los métodos de negocio del bean ¡ Consideraciones l Extiende javax.ejb.EJBLocalObject l Los métodos de negocio que publiquemos en la interfaz local no tienen porqué lanzar la excepción java.rmi.RemoteException. ¡ Pasos: l Creamos en un directorio vacío el fichero HolaMundoLocal.java. l Publicamos el método saludo que recibe un String (nombre) y retorna otro String. Desarrollo de la interfaz local… PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 15
  • 16. Desarrollo del interfaz Home… ¡ El interfaz home describe la factoría de EJBs. ¡ Tiene métodos para crear y destruir objetos EJB ¡ La implementación de la interfaz es el objeto home, y será generada por las herramientas del contenedor. ¡ Consideraciones: l El método create es el método que los clientes deben emplear para obtener una referencia al EJB. Se emplea para inicializar el bean. l Lanza java.rmi.RemoteException y java.ejb.CreateException. l Extiende javax.ejb.EJBHome ¡ Pasos: l Crear el fichero HolaMundoHome.java para la interfaz que extienda javax.ejb.EJBHome l Publicar el método HolaMundo create() que lance ambas excepciones. Desarrollo del interfaz Home… PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 16
  • 17. Desarrollo del interfaz Home Local ¡ Las diferencias con el interfaz Home son, l La interfaz local extiende EJBLocalHome en lugar de EJBHome. l El método create ya no tiene porqué lanzar una RemoteException. ¡ El objeto devuelto por el método create será del tipo HolaMundoLocal, es decir, un objeto no remoto que cumple la interfaz Local que acabamos de definir. Desarrollo del interfaz Home Local PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 17
  • 18. Desarrollo del bean de negocio ¡ Creamos el fichero HolaMundoBean.java ¡ La clase debe implementar javax.ejb.SessionBean ¡ Métodos obligatorios: l public void ejbActivate() {} l public void ejbPassivate() {} l public void setSessionContext(javax.ejb.SessionContext context){} l public void unsetSessionContext() {} l public void ejbRemove() {} l public void ejbCreate() {} que lanza una javax.ejb.CreateException ¡ Y el método de negocio… l public String saludo (String mensaje) {return “Hola mundo “+mensaje;} Desarrollo del bean de negocio PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 18
  • 19. El contexto de los EJBs ¡ El contenedor nos facilita Bean Contexto el contexto invocando el método setSessionContext( … ); Session SessionCont ¡ Es la vía de comunicación Bean ext entre los EJBs y el contenedor ¡ A través del contexto EntityBean EntityContex podemos recuperar t información del contenedor de EJBs (ej, Message MessageDriv credenciales de Driven enContext seguridad), modificar su Beans status, manejar transacciones, etc. El contexto de los EJBs PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 19
  • 20. Generar el descriptor de despliegue ejb-jar.xml ¡ Describe el despliegue que el contenedor ha de hacer con los EJBs del jar. ¡ Uno por cada fichero jar. ¡ Lo metemos en el directorio META-INF. ¡ Permiten especificar atributos de los beans de forma declarativa en lugar de por programa. ¡ Deberemos declarar para nuestro bean: l ejb-name: es el nick del ejb. l home: nombre cualificado completo de la interfaz Home del bean. l remote: nombre cualificado completo de la interfaz remota. l local-home: nombre cualificado completo de la interfaz Home local. l local: nombre cualificado completo de la interfaz local l ejb-class : nombre cualificado completo del bean de negocio l session-type: Statefull/Stateless l transaction-type: Container Ejb-jar.xml <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" " http://java.sun.com/dtd/ejb- jar_2_0.dtd"> <ejb-jar> <enterprise-beans> <session> <ejb-name>HolaMundo</ejb-name> <home>HolaMundoHome</home> <remote>HolaMundo</remote> <local-home>HolaMundoLocalHome</local- home> <local>HolaMundoLocal</local> <ejb-class>HolaMundoBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction- type> </session> </enterprise-beans> </ejb-jar> PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 20
  • 21. Descriptor de despliegue de jboss. Jboss.xml ¡ También en el directorio META-INF. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd"> <jboss> <enterprise-beans> <session> <ejb-name>HolaMundo</ejb-name> <jndi-name>HolaMundo</jndi-name> </session> </enterprise-beans> <resource-managers> </resource-managers> </jboss> Construcción del JAR ¡ Compilamos las clases java. ¡ Invocamos jar cf HolaMundo.jar * ¡ El * indica que clases queremos meter dentro del JAR. ¡ Arrancamos jboss ejecutando run en el directorio bin ¡ Copiamos el jar al directorio deploy/default ¡ Comprobamos en la ventana de comandos de JBOSS el despliegue de HolaMundo.jar ¡ Comprobamos en la consola jmx que el EJB está publicado. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 21
  • 22. Invocación de EJBs ¡ Hay dos posibles tipos de clientes para invocar a un EJB: l Clientes Java RMI-IIOP. ¡ Se sirven de JNDI para localizar a través de la red los objetos que requieren, y de la JTA (Java Transaction API) para el control de las transacciones. l Cliente CORBA ¡ Los clientes pueden ser aplicaciones CORBA estándar. ¡ Esto permite la invocación de un EJB desde otro lenguaje distinto como C++. ¡ Emplean COS Naming (Servicio de nombrado de CORBA) para localizar objetos, y CORBA OTS para el control del transacciones. Pasos del cliente… ¡ Para invocar a un EJBs, tanto en clientes CORBA como RMI-IIOP: 1. Localizar el objeto Home o factoría 2. Emplear el objeto Home para obtener una referencia remota al EJB 3. Invocar los métodos del negocio del EJB 4. Liberar el EJB PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 22
  • 23. Invocación del EJB. Localización del Home ¡ El cliente no tiene porqué conocer la localización del objeto Home ¡ Lo localiza por medio de un servicio de nombrado o servicio de directorio al que accede por medio de JNDI ¡ Esto aumenta la portabilidad del cliente … … aunque siempre tendremos que saber la localización del árbol JNDI. Invocación del EJB PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 23
  • 24. Invocación del EJB ¡ Inicializamos el contexto inicial… Hashtable props = new Hashtable(); props.put(InitialContext.INITIAL_CONTEXT_FACTORY ,"org.jnp.interfaces.NamingContextFactory"); props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099"); InitialContext initialContext = new InitialContext(props); ¡ Y localizamos el objeto home… HolaMundoHome home = (HolaMundoHome) initialContext.lookup( "HolaMundo" ); Invocación del EJB ¡ Ya podemos crear el EJB a partir de la factoría e invocar su método de negocio. //Obtenemos la referencia al EJB de la factoría... HolaMundo holaMundo = home.create(); //Ya podemos invocar el método de negocio... System.out.println( holaMundo.saludo("Homer Simpson")); PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 24
  • 25. Y la invocación a través de la interfaz Local? ¡ Si estamos en la misma máquina … … porqué no funciona? La interfaz local sólo puede ser empleada para acceder a un EJB si el cliente se encuentra en la misma máquina virtual (JVM) que el EJB, no en la misma máquina física. Por ejemplo, un EJB puede invocar a otro EJB del mismo contenedor por medio de su interfaz local. Ahora ... EJB 3.0 ¡ Objetivos de J2EE: Desarrollo rápido y productivo de componentes de negocio ¡ EJBs 2.x: l Demasiado complicados de desarrollar l Ejb-jar sobrecargado ¡ EJB 3.0: Incorpora o se aprovecha de dos nuevos modelos: l Metadatos de Java (incorporados en la versión 1.5) l Modelo de persistencia Hibernate. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 25
  • 26. Anotaciones EJB ¡ En EJB 3.0 se reducen considerablemente las tareas que el desarrollador del bean debe realizar ¡ EJB 3.0 todos los beans son POJOs con anotaciones EJB. ¡ Mediante anotaciones: l Se define el interfaz del bean l El mapeo O/R l Referencias a recursos. l Cualquier cosa que antes poníamos en los descriptores. ¡ El descriptor desaparece, junto con las interfaces home. Nuevo sistema de persistencia ((POJO + anotaciones) + EntityManager ) asociado a un contexto de persistencia ¡ Relaciones en los entity beans: l Especificadas también mediante anotaciones. PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 26
  • 27. Stateless Session Beans import javax.ejb.*; @Stateless @Remote public class HolaMundoBean { public String saludo(String mensaje) { return "Hola “+mensaje; } } Message Driven Beans ¡ Es el único que está obligado a cumplir una interfaz concreta: ¡ javax.jms.MessageListener ¡ No implican cambios significativos PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 27
  • 28. Entity Beans ¡ Se declaran mediante @Entity. ¡ Todas los atributos son persistentes salvo los marcados como @Transient. @Entity public class Order { private Long id; private int version; @Id(generate=AUTO) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Version protected int getVersion() { return version; } protected void setVersion(int version) { this.version = version; … Relaciones ¡ Unidireccionales o bidireccionales ¡ Cualquier combinación de cardinalidad. @ManyToOne public Customer getCustomer() { return cust; } public setCustomer(Customer cust) { this.cust = cust; } PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 28
  • 29. Mapeo O/R ¡ Inspirado en Hibernate ¡ El mapeo a las columnas de la tabla se especifica así mismo mediante anotaciones ¡ Eliminan es esquema abstracto de datos. EJBQL ¡ Las queries se definen mediante @NamedQuery con name y queryString. ¡ Las queries se manejan por medio del EntityManager: @NamedQuery( name="findAllCustomersWithName", queryString="SELECT c FROM Customer c WHERE c.name LIKE :custName" ) .. .. @Inject public EntityManager em; customers = em.createNamedQuery("findAllCustomersWithNa me").setParameter("custName", "Smith").listResults(); PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 29
  • 30. EJBQL ¡ Ampliaciones: l Inner & outer joins. l Creación de clases como resultado de consultas. l SELECT new CustomerDetails(c.id, c.status, o.count) FROM Customer c JOIN c.orders o WHERE o.count > 100 l GROUP BY & HAVING l Consultas anidadas en la cláusula WHERE… Seguridad y Transacciones ¡ También mediante atributos: l @TransactionAttribute l @MethodPermissions. ¡ Excepciones: l Se eliminan las excepciones impuestas hasta ahora por la especificación;: ¡ CreateException ¡ FinderException PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 30
  • 31. Despliegue EJB 3.0 PDF Creator - PDF4Free v2.0 http://www.pdf4free.com 31