31
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

Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

  • Upload
    buidiep

  • View
    246

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

1

EJBsEnterprise JavaBeans

Que son los EJBs

iexcl Enterprise JavaBeans (EJB) es una arquitectura decomponentes de servidor que simplifica el proceso deconstruccioacuten de aplicaciones de componentesempresariales distribuidos en Javal Con su utilizacioacuten es posible escribir aplicaciones

escalables fiables y seguras sin escribir coacutedigo deinfraestructura

l La existencia de infraestructura permite un desarrollomaacutes raacutepido de la parte servidora

iexcl Dado que son componentes permiten desarrollaraplicaciones portables entre distintas plataformas (sonJava) y servidores de aplicaciones (especificacioacutenestaacutendar)

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

2

Enterprise JavaBeans

iexcl Un EJB es un componente software que seejecuta del lado del servidor en una aplicacioacutenmulticapa

iexcl Los clientes del EJB acceden a eacutel por medio deuna interfaz que esconde los detalles deimplementacioacuten del componente

iexcl Esta interfaz debe cumplir la especificacioacutenEJBl La especificacioacuten fuerza la presencia de unos

determinados meacutetodos que permitiraacuten alcontenedor de EJBs manejar los componentes y suciclo de vida

Categoriacuteas de EJBs

iexcl 3 tipos de Enterprise JavaBeansl Entity Beans representan entidades de

negocio y proveen acceso a datos a traveacutesde meacutetodos Se basan en la idea delmapeo objetorelacional

l Session Beans pensados para modelarprocesos de negocio que son accedidos demanera siacutencrona

l Message-driven Beans pensados paramodelar procesos de negocio que sonaccedidos de manera asiacutencronapermiten el uso de JMS desde EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

3

Entity EJBs

iexcl Dos tiposl BMP (Bean Managed Persistence)

iexcl Se delega en el desarrollador las tareas depersistir buscar y recuperar las entidades

l CPM (Container Managed Persistence)iexcl La persistencia la gestiona el contenedor de

forma que el desarrollador no se preocupa delas sentencias SQL de insercioacuten recuperacioacutenetc

iexcl Un Entity EJB representa en cadamomento a una entidad en base de datosMuy acadeacutemicos

iexcl Presentan problemas de rendimiento

Session EJBs

iexcl Dos tiposl Stateful (Con estado)

iexcl El contenedor garantiza el mantenimientodel estado del componente entre distintasinvocaciones (se serializan y deserializan)

l Stateless (Sin estado)iexcl El contenedor de EJBs no garantiza que

un mismo EJB guarde su estado entre dosinvocaciones del mismo cliente Sonldquopooleablesrdquo y maacutes ligeros que losStateful

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

4

Message Driven Beans

iexcl Incorporados en la especificacioacuten20

iexcl Pensados para mensajeriacuteaasiacutencrona

iexcl Funcionan sobre JMS (manejo decolas de mensajes publish ampsubscribe)

iexcl Interesantes para integracioacuten desistemas

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

5

EJBs como Objetos distribuidos

iexcl Un objeto distribuido es un objetoinvocable desde un sistema remoto

Middlewares

iexcl Herramientas que proporcionan servicios para eldesarrollo de sistemas distribuidosl Ej los ORBs CORBA

iexcl Clasificacioacutenl Presencia expliacutecita

iexcl El componente de negocio necesita realizarinvocaciones expliacutecitas a la API del middleware

iexcl Difiacutecil de desarrollar y manteneriexcl Ej CORBA TUXEDO DCOM RMI RPCs etc

l Presencia impliacutecitaiexcl La interaccioacuten con las APIs no la realiza el

componente de negocio desarrollado sino que lagestiona el middleware al que se le solicitan losservicios de forma declarativa (configuracioacutendescriptores de servicios etc)

iexcl Ej EJBs CCM NET etc

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 2: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

2

Enterprise JavaBeans

iexcl Un EJB es un componente software que seejecuta del lado del servidor en una aplicacioacutenmulticapa

iexcl Los clientes del EJB acceden a eacutel por medio deuna interfaz que esconde los detalles deimplementacioacuten del componente

iexcl Esta interfaz debe cumplir la especificacioacutenEJBl La especificacioacuten fuerza la presencia de unos

determinados meacutetodos que permitiraacuten alcontenedor de EJBs manejar los componentes y suciclo de vida

Categoriacuteas de EJBs

iexcl 3 tipos de Enterprise JavaBeansl Entity Beans representan entidades de

negocio y proveen acceso a datos a traveacutesde meacutetodos Se basan en la idea delmapeo objetorelacional

l Session Beans pensados para modelarprocesos de negocio que son accedidos demanera siacutencrona

l Message-driven Beans pensados paramodelar procesos de negocio que sonaccedidos de manera asiacutencronapermiten el uso de JMS desde EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

3

Entity EJBs

iexcl Dos tiposl BMP (Bean Managed Persistence)

iexcl Se delega en el desarrollador las tareas depersistir buscar y recuperar las entidades

l CPM (Container Managed Persistence)iexcl La persistencia la gestiona el contenedor de

forma que el desarrollador no se preocupa delas sentencias SQL de insercioacuten recuperacioacutenetc

iexcl Un Entity EJB representa en cadamomento a una entidad en base de datosMuy acadeacutemicos

iexcl Presentan problemas de rendimiento

Session EJBs

iexcl Dos tiposl Stateful (Con estado)

iexcl El contenedor garantiza el mantenimientodel estado del componente entre distintasinvocaciones (se serializan y deserializan)

l Stateless (Sin estado)iexcl El contenedor de EJBs no garantiza que

un mismo EJB guarde su estado entre dosinvocaciones del mismo cliente Sonldquopooleablesrdquo y maacutes ligeros que losStateful

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

4

Message Driven Beans

iexcl Incorporados en la especificacioacuten20

iexcl Pensados para mensajeriacuteaasiacutencrona

iexcl Funcionan sobre JMS (manejo decolas de mensajes publish ampsubscribe)

iexcl Interesantes para integracioacuten desistemas

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

5

EJBs como Objetos distribuidos

iexcl Un objeto distribuido es un objetoinvocable desde un sistema remoto

Middlewares

iexcl Herramientas que proporcionan servicios para eldesarrollo de sistemas distribuidosl Ej los ORBs CORBA

iexcl Clasificacioacutenl Presencia expliacutecita

iexcl El componente de negocio necesita realizarinvocaciones expliacutecitas a la API del middleware

iexcl Difiacutecil de desarrollar y manteneriexcl Ej CORBA TUXEDO DCOM RMI RPCs etc

l Presencia impliacutecitaiexcl La interaccioacuten con las APIs no la realiza el

componente de negocio desarrollado sino que lagestiona el middleware al que se le solicitan losservicios de forma declarativa (configuracioacutendescriptores de servicios etc)

iexcl Ej EJBs CCM NET etc

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 3: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

3

Entity EJBs

iexcl Dos tiposl BMP (Bean Managed Persistence)

iexcl Se delega en el desarrollador las tareas depersistir buscar y recuperar las entidades

l CPM (Container Managed Persistence)iexcl La persistencia la gestiona el contenedor de

forma que el desarrollador no se preocupa delas sentencias SQL de insercioacuten recuperacioacutenetc

iexcl Un Entity EJB representa en cadamomento a una entidad en base de datosMuy acadeacutemicos

iexcl Presentan problemas de rendimiento

Session EJBs

iexcl Dos tiposl Stateful (Con estado)

iexcl El contenedor garantiza el mantenimientodel estado del componente entre distintasinvocaciones (se serializan y deserializan)

l Stateless (Sin estado)iexcl El contenedor de EJBs no garantiza que

un mismo EJB guarde su estado entre dosinvocaciones del mismo cliente Sonldquopooleablesrdquo y maacutes ligeros que losStateful

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

4

Message Driven Beans

iexcl Incorporados en la especificacioacuten20

iexcl Pensados para mensajeriacuteaasiacutencrona

iexcl Funcionan sobre JMS (manejo decolas de mensajes publish ampsubscribe)

iexcl Interesantes para integracioacuten desistemas

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

5

EJBs como Objetos distribuidos

iexcl Un objeto distribuido es un objetoinvocable desde un sistema remoto

Middlewares

iexcl Herramientas que proporcionan servicios para eldesarrollo de sistemas distribuidosl Ej los ORBs CORBA

iexcl Clasificacioacutenl Presencia expliacutecita

iexcl El componente de negocio necesita realizarinvocaciones expliacutecitas a la API del middleware

iexcl Difiacutecil de desarrollar y manteneriexcl Ej CORBA TUXEDO DCOM RMI RPCs etc

l Presencia impliacutecitaiexcl La interaccioacuten con las APIs no la realiza el

componente de negocio desarrollado sino que lagestiona el middleware al que se le solicitan losservicios de forma declarativa (configuracioacutendescriptores de servicios etc)

iexcl Ej EJBs CCM NET etc

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 4: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

4

Message Driven Beans

iexcl Incorporados en la especificacioacuten20

iexcl Pensados para mensajeriacuteaasiacutencrona

iexcl Funcionan sobre JMS (manejo decolas de mensajes publish ampsubscribe)

iexcl Interesantes para integracioacuten desistemas

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

5

EJBs como Objetos distribuidos

iexcl Un objeto distribuido es un objetoinvocable desde un sistema remoto

Middlewares

iexcl Herramientas que proporcionan servicios para eldesarrollo de sistemas distribuidosl Ej los ORBs CORBA

iexcl Clasificacioacutenl Presencia expliacutecita

iexcl El componente de negocio necesita realizarinvocaciones expliacutecitas a la API del middleware

iexcl Difiacutecil de desarrollar y manteneriexcl Ej CORBA TUXEDO DCOM RMI RPCs etc

l Presencia impliacutecitaiexcl La interaccioacuten con las APIs no la realiza el

componente de negocio desarrollado sino que lagestiona el middleware al que se le solicitan losservicios de forma declarativa (configuracioacutendescriptores de servicios etc)

iexcl Ej EJBs CCM NET etc

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 5: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

5

EJBs como Objetos distribuidos

iexcl Un objeto distribuido es un objetoinvocable desde un sistema remoto

Middlewares

iexcl Herramientas que proporcionan servicios para eldesarrollo de sistemas distribuidosl Ej los ORBs CORBA

iexcl Clasificacioacutenl Presencia expliacutecita

iexcl El componente de negocio necesita realizarinvocaciones expliacutecitas a la API del middleware

iexcl Difiacutecil de desarrollar y manteneriexcl Ej CORBA TUXEDO DCOM RMI RPCs etc

l Presencia impliacutecitaiexcl La interaccioacuten con las APIs no la realiza el

componente de negocio desarrollado sino que lagestiona el middleware al que se le solicitan losservicios de forma declarativa (configuracioacutendescriptores de servicios etc)

iexcl Ej EJBs CCM NET etc

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 6: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

6

Middlewares Expliacutecitos

Middlewares impliacutecitos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 7: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

7

Estructura EJB

iexcl Un EJB no es una sola clase sino unconjunto de clases interfaces y recursosl El bean de empresa o bean de negocio

(Enterprise Bean)l El EJB Objectl Las interfaces Remotasl El Objeto Homel Los interfaces Localesl Descriptores de Desplieguel Recursos especiacuteficos del servidor de

aplicaciones concreto que estemos empleando

El Bean de Empresa o Negocio

iexcl Se trata de implementacioacuten en siacute del objetodistribuido Dependiendo del tipo de EJB estoseraacutehellipl Implementacioacuten de reglas de negocio en el caso de

EJBs de sesioacutenl Loacutegica de persistencia en el caso de los Entity EJBsl Loacutegica de negocio orientadas a mensajes

iexcl La especificacioacuten determina que estas clasesdeben cumplir una serie de interfacesl JavaxejbEnterpriseBean ndash Esta interfaz funciona

uacutenicamente como marca para que el contenedorsepa que realmente se trata de un EJB ExtiendeSerializable

l Cada tipo de EJB cuenta con un interfaz maacutesespeciacutefico que extiende al de EnterpriseBean

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 8: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

8

El EJB Object

iexcl Representa la capa de indireccioacuten que interceptalas invocaciones remotas al EJB y gestiona losservicios impliacutecitos del contenedor de ejbs

iexcl Objeto inteligente que implementa la loacutegicaintermedia que el contenedor de EJBs requiereantes de que una invocacioacuten a meacutetodo seaservida por el bean de negocio

iexcl Forman parte del contenedor de EJBsiexcl Se generan mediante las herramientas facilitadas

por cada contenedor de EJBs

El EJB Object

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 9: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

9

Las interfaces Remotas

iexcl Son los contratos entre el cliente del EJB y elbean de negocio

iexcl Estaacuten sujetas a la especificacioacuten y deben cumplirciertas reglasl Ej Todas deben extender la interfaz

javaxejbEJBObject

iexcl En la interfaz remota se publican todos losmeacutetodos del bean de negocio que se quieraninvocar remotamente

iexcl La interfaz remota es implementada por el EJBObject el cual es generado automaacuteticamente porel contenedor de EJBs

El Objeto Home

iexcl El cliente no puede instanciar directamente unobjeto remoto dado que se encuentran en otramaacutequina distinta

iexcl Debido al principio de transparencia la ubicacioacutendel cliente es independiente de la localizacioacuten delobjeto remoto

iexcl Las instancias de EJBs se obtienen por medio defactoriacuteas de objetos (Patroacuten de disentildeo Factory[GOF94])

iexcl La factoriacutea es la responsable de instanciar buscary destruir los objetos

iexcl Eacutel objeto home es la factoriacutea para la obtencioacutende referencias a EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 10: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

10

La interfaz Home

iexcl Los objetos home son propios y especiacuteficos de cadafabricante de contenedores son autogenerados yforman parte del contenedor

iexcl El desarrollador debe aportar una interfaz java queextienda la interfaz javaxejbEJBHome

Las interfaces locales

iexcl Antildeadidas en la versioacuten 20 de la especificacioacuten EJBiexcl Solventan el problema de la sobrecarga cuando el EJB

se ejecuta en la propia maacutequina del clienteiexcl Permiten invocar al EJB como si se tratara de un objeto

local tratando con un Objeto Localiexcl El Objeto Local realiza las tareas de middleware que le

corresponderiacutean al EJB Object y luego le cede elcontrol al bean de negocio

iexcl De esta forman se evitan las tareas propias a lainvocacioacuten remota (strubs serializacioacuten etc)

iexcl Son opcionalesiexcl Extienden la interfaz javaxejbEJBLocalObject y su

factoriacutea javaxejbEJBLocalHome

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 11: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

11

Las interfaces locales

iexcl Efectos laterales de su usohellipl Si queremos distribuir el objeto es necesario

tocar el coacutedigo fuente puesto que manejamosinterfaces distintas

l Las interfaces locales en pos del maacuteximorendimiento manejan paso de paraacutemetros porreferencia en lugar de por valor Esto implica uncambio importante en la semaacutentica del coacutedigo y esuna fuente importante de errores

iexcl En consecuencia es interesante emplear el patroacutenbusiness delegate y resolver el servicio por mediode configuracioacuten externalizada (XML BBDD etc)

Descriptores de Despliegue

iexcl Especifica las propiedades y servicios del EJB deforma declarativa

iexcl Describe como ha de ser desplegado el EJB en elcontenedor y como ha de ser manejadol Ciclo de vidal Sistema de persistencial Control de transaccionesl Servicios de seguridad

iexcl Es un fichero XML ejb-jarxmliexcl Habraacute uno por paquete de despliegue (fichero

jar) y puede declarar varios EJBs de distintostipos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 12: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

12

Recursos especiacuteficos del servidorde aplicaciones

iexcl Ficheros propios del servidoriexcl Fuera del estaacutendar J2EEiexcl Cada servidor describe y exige por ejemplo su

propio descriptor de despliegue (ademaacutes del ejb-jarxml)

iexcl Normalmente los servidores de aplicacionesfacilitan herramientas para realizar el desplieguey confeccionar los descriptores

Empaquetado de EJBs

iexcl Se realizaen ficherosJAR

iexcl Uno o maacutesEJBs porcada JAR

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 13: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

13

Desarrollo EJBsHola MundoComo se hariacutea con EJB20

Pasos a seguirhellip

iexcl Escribir las clases java necesariasl Interfaces local (opcional) y remotal La clase del bean de negociol El interfaz home

iexcl Escribir el descriptor de despliegue y elpropio del contenedor en caso de quefuera necesario

iexcl Compilar las clases javaiexcl Desplegar el JAR en el contendoriexcl Desarrollar un programa cliente para

comprobar el funcionamiento

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 14: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

14

Desarrollo de la interfaz remotahellip

iexcl La interfaz remota contiene todos losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBObjectl Los meacutetodos de negocio que publiquemos en la

interfaz remota deben lanzar la excepcioacutenjavarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundojava a mano con el notepadl Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz remotahellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 15: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

15

Desarrollo de la interfaz localhellip

iexcl La interfaz local tambieacuten contiene losmeacutetodos de negocio del bean

iexcl Consideracionesl Extiende javaxejbEJBLocalObjectl Los meacutetodos de negocio que publiquemos en la

interfaz local no tienen porqueacute lanzar laexcepcioacuten javarmiRemoteException

iexcl Pasosl Creamos en un directorio vaciacuteo el fichero

HolaMundoLocaljaval Publicamos el meacutetodo saludo que recibe un

String (nombre) y retorna otro String

Desarrollo de la interfaz localhellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 16: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

16

Desarrollo del interfaz Homehellipiexcl El interfaz home describe la factoriacutea de EJBsiexcl Tiene meacutetodos para crear y destruir objetos EJBiexcl La implementacioacuten de la interfaz es el objeto

home y seraacute generada por las herramientas delcontenedor

iexcl Consideracionesl El meacutetodo create es el meacutetodo que los clientes

deben emplear para obtener una referencia al EJBSe emplea para inicializar el bean

l Lanza javarmiRemoteException yjavaejbCreateException

l Extiende javaxejbEJBHomeiexcl Pasos

l Crear el fichero HolaMundoHomejava para lainterfaz que extienda javaxejbEJBHome

l Publicar el meacutetodo HolaMundo create() que lanceambas excepciones

Desarrollo del interfaz Homehellip

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 17: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

17

Desarrollo del interfaz Home Local

iexcl Las diferencias con el interfaz Home sonl La interfaz local extiende EJBLocalHome en

lugar de EJBHomel El meacutetodo create ya no tiene porqueacute lanzar

una RemoteException

iexcl El objeto devuelto por el meacutetodo createseraacute del tipo HolaMundoLocal es decirun objeto no remoto que cumple lainterfaz Local que acabamos de definir

Desarrollo del interfaz Home Local

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 18: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

18

Desarrollo del bean de negocio

iexcl Creamos el fichero HolaMundoBeanjavaiexcl La clase debe implementar javaxejbSessionBeaniexcl Meacutetodos obligatorios

l public void ejbActivate() l public void ejbPassivate() l public void setSessionContext(javaxejbSessionContext

context)l public void unsetSessionContext() l public void ejbRemove() l public void ejbCreate() que lanza una

javaxejbCreateException

iexcl Y el meacutetodo de negociohellipl public String saludo (String mensaje) return ldquoHola

mundo ldquo+mensaje

Desarrollo del bean de negocio

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 19: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

19

El contexto de los EJBs

iexcl El contenedor nos facilitael contexto invocando elmeacutetodosetSessionContext( hellip )

iexcl Es la viacutea de comunicacioacutenentre los EJBs y elcontenedor

iexcl A traveacutes del contextopodemos recuperarinformacioacuten delcontenedor de EJBs (ejcredenciales deseguridad) modificar sustatus manejartransacciones etc

MessageDrivenContext

MessageDrivenBeans

EntityContext

EntityBean

SessionContext

SessionBean

ContextoBean

El contexto de los EJBs

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 20: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

20

Generar el descriptor dedespliegue ejb-jarxmliexcl Describe el despliegue que el contenedor ha de hacer

con los EJBs del jariexcl Uno por cada fichero jariexcl Lo metemos en el directorio META-INFiexcl Permiten especificar atributos de los beans de forma

declarativa en lugar de por programaiexcl Deberemos declarar para nuestro bean

l ejb-name es el nick del ejbl home nombre cualificado completo de la interfaz Home

del beanl remote nombre cualificado completo de la interfaz

remotal local-home nombre cualificado completo de la interfaz

Home locall local nombre cualificado completo de la interfaz locall ejb-class nombre cualificado completo del bean de

negociol session-type StatefullStatelessl transaction-type Container

Ejb-jarxmlltDOCTYPE ejb-jar PUBLIC -Sun Microsystems IncDTD

EnterpriseJavaBeans 20EN httpjavasuncomdtdejb-

jar_2_0dtdgtltejb-jargt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtlthomegtHolaMundoHomelthomegtltremotegtHolaMundoltremotegtltlocal-homegtHolaMundoLocalHomeltlocal-

homegtltlocalgtHolaMundoLocalltlocalgtltejb-classgtHolaMundoBeanltejb-classgtltsession-typegtStatelessltsession-typegtlttransaction-typegtContainerlttransaction-

typegtltsessiongt

ltenterprise-beansgtltejb-jargt

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 21: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

21

Descriptor de despliegue de jbossJbossxml

iexcl Tambieacuten en el directorio META-INFltxml version=10 encoding=UTF-8gtltDOCTYPE jboss PUBLIC -JBossDTD JBOSS 30EN

httpwwwjbossorgj2eedtdjboss_3_0dtdgtltjbossgt

ltenterprise-beansgtltsessiongt

ltejb-namegtHolaMundoltejb-namegtltjndi-namegtHolaMundoltjndi-namegt

ltsessiongtltenterprise-beansgtltresource-managersgtltresource-managersgt

ltjbossgt

Construccioacuten del JAR

iexcl Compilamos las clases javaiexcl Invocamos

jar cf HolaMundojar iexcl El indica que clases queremos meter dentro del

JARiexcl Arrancamos jboss ejecutando run en el directorio

biniexcl Copiamos el jar al directorio deploydefaultiexcl Comprobamos en la ventana de comandos de

JBOSS el despliegue de HolaMundojariexcl Comprobamos en la consola jmx que el EJB estaacute

publicado

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 22: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

22

Invocacioacuten de EJBsiexcl Hay dos posibles tipos de clientes para

invocar a un EJBl Clientes Java RMI-IIOP

iexcl Se sirven de JNDI para localizar a traveacutes de lared los objetos que requieren y de la JTA(Java Transaction API) para el control de lastransacciones

l Cliente CORBAiexcl Los clientes pueden ser aplicaciones CORBA

estaacutendariexcl Esto permite la invocacioacuten de un EJB desde

otro lenguaje distinto como C++iexcl Emplean COS Naming (Servicio de nombrado

de CORBA) para localizar objetos y CORBAOTS para el control del transacciones

Pasos del clientehellip

iexcl Para invocar a un EJBs tanto en clientesCORBA como RMI-IIOP

1 Localizar el objeto Home o factoriacutea2 Emplear el objeto Home para obtener

una referencia remota al EJB3 Invocar los meacutetodos del negocio del EJB4 Liberar el EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 23: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

23

Invocacioacuten del EJB Localizacioacutendel Home

iexcl El cliente no tiene porqueacute conocer lalocalizacioacuten del objeto Home

iexcl Lo localiza por medio de un servicio denombrado o servicio de directorio al queaccede por medio de JNDI

iexcl Esto aumenta la portabilidad del cliente helliphellip aunque siempre tendremos que saber la

localizacioacuten del aacuterbol JNDI

Invocacioacuten del EJB

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 24: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

24

Invocacioacuten del EJB

iexcl Inicializamos el contexto inicialhellipHashtable props = new Hashtable()propsput(InitialContextINITIAL_CONTEXT_FACTORY

orgjnpinterfacesNamingContextFactory)propsput(InitialContextPROVIDER_URL

jnp1270011099)InitialContext initialContext = newInitialContext(props)

iexcl Y localizamos el objeto homehellipHolaMundoHome home =

(HolaMundoHome) initialContextlookup(HolaMundo )

Invocacioacuten del EJB

iexcl Ya podemos crear el EJB a partir de lafactoriacutea e invocar su meacutetodo de negocioObtenemos la referencia al EJB de la factoriacuteaHolaMundo holaMundo = homecreate()

Ya podemos invocar el meacutetodo de negocioSystemoutprintln( holaMundosaludo(HomerSimpson))

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 25: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

25

Y la invocacioacuten a traveacutes de lainterfaz Local

iexcl Si estamos en la misma maacutequina helliphellip porqueacute no funciona

La interfaz local soacutelo puede ser empleadapara acceder a un EJB si el cliente seencuentra en la misma maacutequina virtual(JVM) que el EJB no en la mismamaacutequina fiacutesicaPor ejemplo un EJB puede invocar a otroEJB del mismo contenedor por medio desu interfaz local

Ahora EJB 30

iexcl Objetivos de J2EE Desarrollo raacutepido y productivode componentes de negocio

iexcl EJBs 2xl Demasiado complicados de desarrollarl Ejb-jar sobrecargado

iexcl EJB 30 Incorpora o se aprovecha de dos nuevosmodelosl Metadatos de Java (incorporados en la versioacuten

15)l Modelo de persistencia Hibernate

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 26: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

26

Anotaciones EJB

iexcl En EJB 30 se reducen considerablemente lastareas que el desarrollador del bean debe realizar

iexcl EJB 30 todos los beans son POJOs conanotaciones EJB

iexcl Mediante anotacionesl Se define el interfaz del beanl El mapeo ORl Referencias a recursosl Cualquier cosa que antes poniacuteamos en los

descriptoresiexcl El descriptor desaparece junto con las interfaces

home

Nuevo sistema de persistencia

((POJO + anotaciones) +EntityManager ) asociado a un

contexto de persistencia

iexcl Relaciones en los entity beansl Especificadas tambieacuten mediante

anotaciones

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 27: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

27

Stateless Session Beans

import javaxejb

StatelessRemotepublic class HolaMundoBean

public String saludo(Stringmensaje)

return Hola ldquo+mensaje

Message Driven Beans

iexcl Es el uacutenico que estaacute obligado acumplir una interfaz concreta

iexcl javaxjmsMessageListener

iexcl No implican cambios significativos

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 28: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

28

Entity Beans

iexcl Se declaran mediante Entityiexcl Todas los atributos son persistentes salvo

los marcados como TransientEntity public class Order

private Long idprivate int versionId(generate=AUTO)public Long getId() return id public void setId(Long id) thisid = id

Versionprotected int getVersion() return version protected void setVersion(int version) thisversion = version

hellip

Relaciones

iexcl Unidireccionales o bidireccionalesiexcl Cualquier combinacioacuten de

cardinalidadManyToOne

public Customer getCustomer() returncust public setCustomer(Customer cust) thiscust = cust

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 29: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

29

Mapeo OR

iexcl Inspirado en Hibernateiexcl El mapeo a las columnas de la tabla

se especifica asiacute mismo medianteanotaciones

iexcl Eliminan es esquema abstracto dedatos

EJBQL

iexcl Las queries se definen medianteNamedQuery con name y queryString

iexcl Las queries se manejan por medio delEntityManager

NamedQuery(name=findAllCustomersWithNamequeryString=SELECT c FROM Customer c WHEREcname LIKE custName) Inject public EntityManager emcustomers =emcreateNamedQuery(findAllCustomersWithName)setParameter(custNameSmith)listResults()

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 30: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

30

EJBQL

iexcl Ampliacionesl Inner amp outer joinsl Creacioacuten de clases como resultado de

consultasl SELECT new CustomerDetails(cidcstatus ocount)

FROM Customer c JOIN corders oWHERE ocount gt 100

l GROUP BY amp HAVINGl Consultas anidadas en la claacuteusula WHEREhellip

Seguridad y Transacciones

iexcl Tambieacuten mediante atributosl TransactionAttributel MethodPermissions

iexcl Excepcionesl Se eliminan las excepciones impuestas

hasta ahora por la especificacioacuteniexcl CreateExceptioniexcl FinderException

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom

Page 31: Enterprise JavaBeans - di002.edv.uniovi.esdi002.edv.uniovi.es/~dflanvin/docencia/dasdi/teoria/Transparencias... · 2 Enterprise JavaBeans ¡ Un EJB es un componente software que se

31

Despliegue EJB 30

PDF Creator - PDF4Free v20 httpwwwpdf4freecom