View
247
Download
0
Category
Preview:
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
31
Despliegue EJB 30
PDF Creator - PDF4Free v20 httpwwwpdf4freecom
Recommended