Departamento de Ingen|er|a de S|stemas y Computac|n
Lspec|a||zac|n en Construcc|n de Sohware
8ogoL, CCLCM8lA or: kafae| Gustavo Meneses M.Sc. Componentes de Lg|ca de Negoc|o Lnterpr|se Iava 8eans - LI8 3.1 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sesslon 8eans Acceso LsLado conversaclonal MeLodos de collbock Locallzacln 8eferenclas AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 2 Agenda Introducc|n LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sesslon 8eans Acceso LsLado conversaclonal MeLodos de collbock Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 3 AgosLo 29 Introducc|n ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 4 Serv|dor Iava LL y Contenedores 1omado de [1] AgosLo 29 Contenedor LI8 Introducc|n SoporLa concurrencla ermlLe ln[eccln de dependenclas ermlLe mane[ar el esLado conversaclonal con cllenLes rovee pools para admlnlsLrar varlas lnsLanclas de componenLes 8alanceo de carga y clusLerlng rovee servlclo de nombres (!nul) para acceder a los L!8 o a oLros recursos SoporLa !ava 8Ml-llC (8emoLe MeLhod lnvocauon run over lnLerneL lnLer-Crb roLocol), el cual permlLe el acceso remoLo de un cllenLe a un componenLe SoporLa mensa[erla que proveen los message-drlven beans ueparLamenLo de lngenlerla de SlsLemas y CompuLacln S AgosLo 29 Contenedor LI8 Introducc|n ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 6 1omado de [2] AgosLo 29 Agenda lnLroduccln Lnterpr|se Iava 8eans (LI8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sesslon 8eans Acceso LsLado conversaclonal MeLodos de collbock Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 7 AgosLo 29 Lnterpr|se Iava 8eans - LI8s otetptlse Iovo8eoos ls oo otcbltectote fot compooeot-boseJ ttoosocuoo-otleoteJ eotetptlse oppllcouoos. [3]
Ao eotetptlse beoo ls o setvet-slJe compooeot tbot eocopsolotes tbe bosloess loqlc of oo oppllcouoo. [1]
s ooo plotofotmo poto coosttolt opllcoclooes Je oeqoclos pottobles, teoullzobles y escolobles osooJo leoqooje Je ptoqtomoclo IAvA. [2] ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 8 Dehn|c|n AgosLo 29 Lnterpr|se Iava 8eans - LI8s Conuenen lglca de negoclo, que opera sobre los daLos de la empresa Las lnsLanclas de un L!8 son admlnlsLradas en uempo de e[ecucln por un conLenedor ueden ser personallzados en uempo de e[ecucln, edlLando sus varlables de amblenLe Servlclos, Lales como Lransacclonalldad y segurldad, pueden ser especlcados: Ln la lglca del negoclo de la clase eotetptlse beoo en forma de anoLaclones Ln un descrlpLor de despllegue xML ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 9 Caracter|sncas AgosLo 29 Lnterpr|se Iava 8eans - LI8s Ll acceso del cllenLe es medlado por el conLenedor en el cual el eotetptlse beoo es desplegado. LsLe acceso es LransparenLe para el cllenLe
Ll conLenedor asegura que los beans y sus cllenLes puedan ser desplegados en muluples amblenLes de e[ecucln sln re-compllacln
Ll esLndar L!8 3 es desarrollado por Iovo commoolty ltocess (Icl) ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 10 Caracter|sncas (II) AgosLo 29 Lnterpr|se Iava 8eans - LI8s 5lmpllfcoo el Jesottollo Ll conLenedor L!8 es responsable de la admlnlsLracln de servlclos a nlvel del slsLema (l.e. Lransacclones o auLorlzaclones de segurldad)
lo lqlco Jel oeqoclo teslJe eo los eotetptlse beoos y oo eo el loJo Jel clleote ermlLe que el desarrollo del lado del cllenLe esLe desacoplado de la lglca del negoclo
5oo compooeotes orLables, reuullzables y pueden ser desplegados en servldores que usen los esLndares del Al !LL Acceso kemoto ueden resldlr en dlferenLes servldores y pueden ser lnvocados por un cllenLe remoLo ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 11 8enehc|os AgosLo 29 Lnterpr|se Iava 8eans - LI8s Apllcoclooes poe Jebeo set escolobles LsLo lmpllca dlsLrlbucln de componenLes a Lraves de muluples mqulnas
los ttoosocclooes Jebeo oseqotot loteqtlJoJ Je los Jotos Los L!8s soporLan Lransacclonalldad (mecanlsmo que admlnlsLra el acceso concurrenLe de ob[eLos comparudos)
Mou-osootlos locoles y temotos ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 12 jCundo un||zar|os? AgosLo 29 Lnterpr|se Iava 8eans - LI8s ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 13 1|pos de Componentes LI8 Sess|on 8eans SLaLeful Sesslon 8eans SLaLeless Sesslon 8eans SlngleLon Sesslon 8eans Message-Dr|ven 8eans 1omado de [2] AgosLo 29 Lnterpr|se Iava 8eans - LI8s un L!8 debe conLener: close eotetptlse beoo lmplemenLa los meLodos de negoclo y los meLodos del clclo de vlda del L!8 lotetfoces Je oeqoclo uenen los meLodos de negoclo lmplemenLados por la clase enLerprlse bean nelpets Clases uullLarlas requerldas por los enLerprlse bean ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 14 Conten|do de un LI8 - Lstructura de Mdu|os Se empaqueLan en un archlvo !A8 L!8, son porLables y pueden ser empaqueLados en un archlvo LA8 1omado de [1] AgosLo 29 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sess|on 8eans Acceso LsLado conversaclonal MeLodos de collbock Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 1S AgosLo 29 Sess|on 8eans A sessloo beoo eocopsolotes bosloess loqlc tbot coo be lovokeJ ptoqtommoucolly by o clleot ovet locol, temote, ot web setvlce clleot vlews." [1] Son una Lecnologla L!8 que permlLen encapsular procesos de negoclo" [3] ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 16 Dehn|c|n Contenedor EJB 3 Interfaz rovee Lodas las denlclones de los meLodos Clase Bean rovee lmplemenLaclones de los meLodos lmplemeoto Cliente Web, local o remoLo AgosLo 29 Sess|on 8eans vlda corLa, sl el servldor falla la sesln se plerde no mane[an perslsLencla no es comparudo enLre cllenLes ueden acLuallzar y crear enudades, esLas ulumas son perslsLenLes un cllenLe (local o remoLo) lnLeracLua con un sessloo beoo a Lraves de la lnvocacln de sus meLodos (esLa lnvocacln se llama sesln) un componenLe sessloo beoo es un C!C anoLado ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 17 Caracter|sncas 1omado de [2] AgosLo 29 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sess|on 8eans Acceso LsLado conversaclonal MeLodos de collbock Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 18 AgosLo 29 Sess|on 8eans un sessloo beoo esL compuesLo por una o ms lnLerfaces y una clase de lmplemenLacln un cllenLe puede acceder a un sessloo beoo solamenLe a Lraves de meLodos denldos en la lotetfoz del bean La lnLerfaz dene la vlsLa al cllenLe de un bean un sessloo beoo puede ser lnvocado a Lraves de 8Ml por medlo de una lnLerfaz: 8emoLa Local ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 19 Acceso a un Sess|on 8ean AgosLo 29 Sess|on 8eans Alto o bojo ocoplomleoto Je beoos telocloooJos 8eans alLamenLe acoplados son candldaLos a ser accedldos localmenLe
1lpo Je clleote Sl el bean es accedldo por opllcoclooes clleote, esLe debe permlur acceso remoLo
ulsttlboclo Je compooeotes Ln un escenarlo dlsLrlbuldo, los beans deben permlur acceso remoLo
uesempeo lnvocaclones remoLas normalmenLe son ms lenLas que las lnvocaclones locales ulsLrlbulr componenLes en dlferenLes mqulnas me[ora el desempeno de Loda la apllcacln ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 20 jAcceso Loca| o kemoto? AgosLo 29 Sess|on 8eans un cllenLe local puede lnvocar un sessloo beoo a Lraves de una lnLerfaz local. Ln esLe caso el cllenLe reslde en el mlsmo lugar que la lnsLancla del sessloo beoo ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 21 Acceso Loca| 1omado de [4] AgosLo 29 Sess|on 8eans ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 22 C||ente Loca| uebe e[ecuLarse en la mlsma !vM en la cual se e[ecuLan los L!8 a los que accede uede ser un componenLe web u oLro L!8 La lnLerfaz local dene: Los meLodos de negoclo del bean Los meLodos del clclo de vlda el clclo de vlda del bean La lnLerfaz de un sessloo beoo por defecLo es local AgosLo 29 Sess|on 8eans Crear una c|ase enLerprlse bean que no lmplemenLa una lnLerfaz de negoclo, lndlcando que el bean expone una vlsLa oo-lotetfoce al cllenLe
AnoLar la lnLerfaz de negoclo del L!8 como una lnLerfaz @Local
Lspeclcar la lnLerfaz decorando la clase del bean con y especlcando el nombre de la lnLerfaz ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 23 Imp|ementac|n @Session public class MyBean { ... } @Local public interface InterfaceName { ... } @Local(InterfaceName.class) public class BeanName implements InterfaceName { ... } AgosLo 29 Sess|on 8eans un cllenLe remoLo lnvoca una lnLerfaz remoLa de un sessloo beoo ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 24 Acceso kemoto 1omado de [4] AgosLo 29 Sess|on 8eans uede e[ecuLarse en una mqulna dlferenLe y una !vM dlferenLe al eotetptlse beoo que accede uede ser un componenLe web, una apllcacln cllenLe u oLro eotetptlse beoo ara el cllenLe remoLo la ublcacln del eotetptlse beoo es LransparenLe
La lnLerface remoLa dene los meLodos de negoclo y del clclo de vlda del sessloo beoo
Ll eotetptlse beoo debe lmplemenLar una lnLerfaz de negoclo CllenLes remoLos no pueden acceder un bean a Lraves de una vlsLa no-lnLerfaz ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 2S C||ente kemoto AgosLo 29 Sess|on 8eans uecorar la lnLerfaz de negoclo del bean con @Remote
uecorar la clase del bean con @Remote, especlcando la lnLerfaz de negoclo ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 26 Imp|ementac|n @Remote public interface InterfaceName { ... } @Remote(InterfaceName.class) public class BeanName implements InterfaceName { ... } AgosLo 29 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sess|on 8eans Acceso Lstado conversac|ona| MeLodos de collbock Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 27 AgosLo 29 Sess|on 8eans Ll esLado de un ob[eLo se compone de los valores de sus varlables de lnsLancla Las lnsLanclas de las varlables represenLan el esLado de una unlca sesln clleote-beoo Ll esLado de la lnLeraccln del cllenLe con el bean es llamado estoJo coovetsocloool
1lpos de sesslon beans: SLaLeful SLaLeless SlngleLon ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 28 Lstado Conversac|ona| AgosLo 29 Statefu| Sess|on 8eans Ll esLado se mannene duranLe la sesln del cllenLe con el bean una lnsLancla es reservada para un cllenLe y cada una almacena la lnformacln de dlcho cllenLe
La sesln nallza sl el cllenLe remueve el bean o nallza su sesln ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 29 Adicionar artculos Agregar informacin adicional compra Realizar compra AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 30 Imp|ementac|n Statefu| Sess|on 8eans AgosLo 29 AugusL 12 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 31 C|c|o de V|da Statefu| Sess|on 8eans L| c||ente |n|c|a e| c|c|o de v|da obten|endo una referenc|a a| sess|on bean statefu| L| contenedor dec|de desacnvar e| bean L| c||ente |nvoca a|gn mtodo de| negoc|o durante |a desacnvac|n L| mtodo !"#$%" es e| n|co que es |nvocado d|rectamente por e| c||ente State|ess Sess|on 8eans no manuene un estoJo coovetsocloool con el cllenLe Cuando un cllenLe lnvoca los meLodos de un sLaLeless bean, las varlables de lnsLancla del bean pueden conLener un esLado especlco del cllenLe, pero slo por la duracln de la lnvocacln. Cuando el meLodo nallza, el esLado del cllenLe especlco no deberla manLenerse Las lnsLanclas pueden esLar comparudas por los cllenLes. Ll conLenedor uene un pool de lnsLanclas, cuando el cllenLe lnvoca un meLodo se aslgna una lnsLancla, cuando la llbere es reLornada al pool ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 32 Las lnsLanclas pueden esLar comparudas por los cllenLes Ll conLenedor uene un pool de lnsLanclas, cuando el cllenLe lnvoca un meLodo se aslgna una lnsLancla, cuando la llbera es reLornada al pool AgosLo 29 State|ess Sess|on 8eans Cfrecen me[or escalabllldad para apllcaclones con gran canudad de cllenLes uede lmplemenLar un web setvlce ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 33 Imp|ementac|n AgosLo 29 Imp|ementac|n State|ess Sess|on 8eans ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 34 AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 3S C|c|o de V|da State|ess Sess|on 8eans L| c||ente |n|c|a e| c|c|o de v|da obten|endo una referenc|a a| bean de ses|n state|ess AgosLo 29 S|ng|eton Sess|on 8eans LnLerprlse bean lnsLanclado una vez por apllcacln LxlsLe duranLe Lodo el clclo de vlda de la apllcacln Son dlsenados para casos en los que una mlsma lnsLancla de un bean es compotuJo y occeJlJo coocotteotemeote por los cllenLes de la apllcacln Slmllar a un stoteless sesloo beoo no manuene un estoJo coovetsocloool con el cllenLe uede lmplemenLar eoJ-polots de web servlces uede ser uullzado para e[ecuLar Lareas de lnlclallzacln de la apllcacln o para Lareas de llmpleza cuando la apllcacln Lermlna su e[ecucln
ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 36 1omado de: hup://whaL-when-how.com/enLerprlse-[avabeans-3-1/Lhe-slngleLon-sesslon-bean-enLerprlse-[avabeans-3-1/ AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 37 Imp|ementac|n S|ng|eton Sess|on 8eans AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 38 Imp|ementac|n Conta|ner-Managed Concurrency (CMC) S|ng|eton Sess|on 8eans AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 39 Imp|ementac|n 8ean-Managed Concurrency (8MC) S|ng|eton Sess|on 8eans AgosLo 29 ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 40 C|c|o de V|da S|ng|eton Sess|on 8eans L| contenedor es responsab|e por |n|c|a||zar un bean s|ng|eton, s|n embargo. AgosLo 29 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sess|on 8eans Acceso LsLado conversaclonal Mtodos de &'(()'*+ Locallzacln 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 41 AgosLo 29 Sess|ons 8eans Los meLodos collbock son meLodos del bean (no expuesLos en la lnLerfaz) que el conLenedor llomo para noucar la Lranslcln del clclo de vlda de un bean
Cuando el evenLo del clclo Je vlJo del bean ocurre, el conLenedor lnvoca al meLodo callback correspondlenLe
LsLos meLodos son marcados con anoLaclones como QostContruct y QreDestroy y para los sLaLeful sesslon bean se agregan Qreass|vate y QostAcnvate ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 42 Mtodos de Ca||back AgosLo 29 Sess|on 8eans ueben ser publlcos, sln reLorno (vold), y sln parmeLros
uullzan las slgulenLes anoLaclones: QostConstruct lnvocado sobre una lnsLancla reclenLemenLe creada despues de la lnyeccln (o !nul lookup) de Lodas las dependenclas y anLes de la lnvocacln del prlmer meLodo QreDestroy lnvocado luego de que un meLodo anoLado con [8emove ha Lermlnado y anLes de que el conLenedor ellmlne la lnsLancla del bean Qreass|vate lnvocado anLes de que el conLenedor desacuve (passlvaLe) el bean, el conLenedor deshablllLa LemporalmenLe el bean y lo guarda en memorla secundarla QostAcnvate lnvocado despues de que el conLenedor mueve el bean de memorla secundarla a esLado acuvo (acuve) ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 43 Mtodos de Ca||back (II) AgosLo 29 Sess|on 8eans ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 44 Imp|ementac|n AgosLo 29 Agenda lnLroduccln LnLerprlse !ava 8eans (L!8s) CaracLerlsucas 8eneclos 1lpos de componenLes Sess|on 8eans Acceso LsLado conversaclonal MeLodos de collbock Loca||zac|n 8eferenclas ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 4S AgosLo 29 Sess|on 8eans Con !nul es responsabllldad del cllenLe hacer la locallzacln y obLener la referencla al ob[eLo Con L!8 3, se puede uullzar la loyecclo Je JepeoJeoclos, de[ando que el conLenedor se responsablllce de lnyecLar un ob[eLo basado en la declaracln de la lnyeccln ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 46 Loca||zac|n AgosLo 29 Sess|on 8eans uullzando la anoLacln javax.ejb.EJB en el cllenLe, especlcando el nombre de la clase del enLerprlse bean: A Lraves un de un lookop INul Los cllenLes nunca uullzan el operador -". ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 47 Loca||zac|n |oca| - or med|o de |a v|sta no-|nterface @EJB ExampleBean exampleBean; ExampleBean exampleBean = (ExampleBean) InitialContext.lookup("java:module/ExampleBean"); AgosLo 29 Sess|on 8eans uullzando la anoLacln javax.ejb.EJB en el cllenLe, especlcando el nombre de la lnLerfaz de negoclo locol: A Lraves un de un lookop INul Los cllenLes nunca uullzan el operador -". ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 48 Loca||zac|n |oca| - or med|o de |a |nterface de negoc|o @EJB Example example; ExampleLocal example = (ExampleLocal) InitialContext.lookup("java:module/ExampleLocal"); AgosLo 29 Sess|on 8eans uullzando la anoLacln javax.ejb.EJB en el cllenLe, especlcando el nombre de la lnLerfaz de negoclo temoto: A Lraves un de un lookop INul Los cllenLes nunca uullzan el operador -". ueparLamenLo de lngenlerla de SlsLemas y CompuLacln 49 Loca||zac|n remota - or med|o de |a |nterface de negoc|o @EJB Example example; ExampleRemote example = (ExampleRemote) InitialContext.lookup("java:global/myApp/ExampleRemote"); AgosLo 29 Sess|on 8eans ueparLamenLo de lngenlerla de SlsLemas y CompuLacln S0 Imp|ementac|n AgosLo 29 INDI (Iava Nam|ng and D|rectory Interface) un componenLe !ava LL puede locallzar su conLexLo de nombres con !nul
un componenLe puede crear un ob[eLo jovox.oomloq.loluolcootext y buscar su conLexLo ba[o el nombre de jovo.comp/eov
un componenLe !LL puede acceder nombres provlsLos por el slsLema (oomeJ system-ptovlJeJ) y ob[eLos denldos por los usuarlos (oset-JefoeJ objects)
1res (3) namespaces !nul namespaces pueden uullzarse para lookups jovo.qlobol jovo.moJole jovo.opp ueparLamenLo de lngenlerla de SlsLemas y CompuLacln S1 AgosLo 29 INDI (Iava Nam|ng and D|rectory Interface) jovo.qlobol se uullza para enconLrar enLerprlse beans remoLos: