Você está na página 1de 98

1

FACULDADE DE TECNOLOGIA IBRATEC DE JOO PESSOA CURSO DE ESPECIALIZAO LATO SENSU EM DESENVOLVIMENTO WEB

JOO PAULO LOPES DE SOUZA

ANLISE DE TTICAS ARQUITETURAIS NA MELHORIA DO DESEMPENHO DE APLICAES JAVA EE: ESTUDO SOBRE UM SISTEMA DE E-COMMERCE

Joo Pessoa PB Dezembro de 2011

JOO PAULO LOPES DE SOUZA

ANLISE DE TTICAS ARQUITETURAIS NA MELHORIA DO DESEMPENHO DE APLICAES JAVA EE: ESTUDO SOBRE UM SISTEMA DE E-COMMERCE

Monografia apresentada Coordenao do Curso de Espe ia!izao Lato Sensu da "a u!dade de #e no!ogia $B%&#EC de Joo Pessoa' sob a orientao do Prof( Ms ( &!iandro )igino *uedes +ima' omo e,ig-n ia obteno do t.tu!o de espe ia!ista em Desen/o!/imento para 0EB(

Joo Pessoa PB Dezembro de 2011

&#E23456 $27E%$% &89$ & "$C)& C&#&+5*%:"$C& 2o /erso da "o!;a de %osto De e !e" e#$%&"$'$ (&" ("&)*!!*&+$*! '$ ,"e$ '$ B*%#*&-e.&+&/*$ '$ F$.0#'$'e *DEZ 1P"&.0"$" S$+'e"#2 13456-76789 +$ B*%#*&-e.$ '$ F$.0#'$'e *DEZ: +& ;&","*& '$! 85:<< $! 4<:<<9

<

J545 P&9+5 +5PE7 DE 759=&

ANLISE DE TTICAS ARQUITETURAIS NA MELHORIA DO DESEMPENHO DE APLICAES JAVA EE: ESTUDO SOBRE UM SISTEMA DE E-COMMERCE

&pro/ado em 2> de Dezembro de 2011

BANCA E=AMINADORA

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> P"&)? MS.? A#*$+'"& H*@*+& G0e'e! L*/$ O"*e+-$'&"

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> P"&)? M!.? R&'"*@& Re%&0A$! 'e A#/e*'$ EB$/*+$'&"

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> P"&)? M!.? L&"e+& Fe*-&!$ 'e O#* e*"$ EB$/*+$'&"

Dedi o este traba!;o a min;a esposa @erAni a e min;a me %ita' mu!;eres essen iais em min;a /ida e fonte de toda min;a inspirao e amor(

AGRADECIMENTOS

&gradeo primeiramente a Deus por todo seu amor( &gradeo aos meus pais %ita e &pr.gio C in memoriaD pe!o amor' orientao e dedi ao( &gradeo min;a esposa @erAni a pe!o amor' pa i-n ia e apoio in ondi iona! em todos os momentos( &gradeo meus irmos Eri/a!do' Eue deu di as /a!iosas e aFudou on eitos de estat.sti a e &na' Eue re/isou esse traba!;o om tanto ze!o( &gradeo meu amigo Diego pe!a aFuda na re/iso do abstra t( &gradeo min;a prima %i!/a Eue orientou e indi ou Gtimos materiais re!ati/os metodo!ogia de pesEuisa( &gradeo meus amigos $saias' Hta!o' 2apo!eana' Bereni e' @aneide e meus primos *usta/o' Bruno e +uanna pe!a presteza e aFuda forne endo seus omputadores para os e,perimentos( "ao tambIm um agrade imento espe ia! ao Prof( &!iandro +ima' oordenador do urso e orientador' Eue tanto se esforou no de orrer do urso e se mostrou a!tamente Iti o( &!Im do mais' dire ionou esse estudo om toda seriedade e pa i-n ia de um bom mestre( om os

759=&' Joo Pau!o +opes( ANLISE DE TTICAS ARQUITETURAIS NA MELHORIA DO DESEMPENHO DE APLICAES JAVA EE: ESTUDO DE CASO DE UM SISTEMA DE E-COMMERCE? 2011 K 102p( Monografia Curso de Espe ia!izao Lato Sensu em Desen/o!/imento 0eb( "a u!dade iDE=(

RESUMO 5 obFeti/o deste estudo foi ana!isar o impa to no desempen;o e na es a!abi!idade de sistemas desen/o!/idos arEuiteturais de om a p!ataforma Ja/a EE' Euando ap!i adas diferentes tLti as on orr-n ia no a esso ao ban o de dados e a ;e de ontro!e de

entidades( Para atingir esse obFeti/o' fezKse uma re/iso dos prin ipais on eitos re!ati/os arEuitetura de softMare' medio de desempen;o' prob!emas mais omuns de degradao de desempen;o e suas poss./eis so!uNes' asssim omo as ara ter.sti as e te no!ogias Eue ompNem o Ja/a EE B( %ea!izouKse tambIm uma anL!ise emp.ri a atra/Is de um sistema de eK ommer e' em Eue se mediu tempo de resposta mIdio' o /a!or da !in;a de O0P e a sua /azo( 5s resu!tados mostraram Eue o ontro!e de on orr-n ia pessimista apresentou peEuena /antagem em um enLrio de pou a on orr-n ia enEuanto o otimista foi me!;or Euando sob forte on orr-n ia( & tI ni a de in/a!idao do a ;e de entidades mostrouKse me!;or Eue a atua!izaoQrep!i ao(

P$#$ "$!-.;$ e6 Ja/a EER JMeterR &nL!ise de desempen;o' Cluster' JBoss

>

759=&' Joo Pau!o +opes( ANLISE DE TTICAS ARQUITETURAIS NA MELHORIA DO DESEMPENHO DE APLICAES JAVA EE: ESTUDO DE CASO DE UM SISTEMA DE E-COMMERCE? 2011 K 102p( Monografia Curso de Espe ia!izao Lato Sensu em Desen/o!/imento 0eb( "a u!dade iDE=(

ABSTRACT #;e aim of t;is studS Mas to ana!Sze t;e impa t on performan e and s a!abi!itS of t;e sSstems de/e!oped Mit; t;e Ja/a EE p!atform t;roug; app!Sing different ta ti s ar ;ite tura! of on urren S ontro! a ess to t;e database and a ;e entities( #o a ;ie/e t;is goa!' Me did a re/ieM of t;e main measurement' t;e most on epts re!ated to softMare ar ;ite ture' performan e ommon prob!ems of performan e degradation and possib!e

so!utions' as goes !iTe features and te ;no!ogies t;at maTe up t;e Ja/a EE B( 0e a!so ondu ted an ana!Ssis t;roug; an empiri a!!S eK ommer e sSstem' in M;i ; measured a/erage response time' t;e roM /a!ue of O0P and its f!oM rate( #;e resu!ts s;oMed t;at t;e pessimisti on urren S ontro! s;oMed a s!ig;t ad/antage in a s enario of !oM ompetition ompetition( #;e te ;niEue of a ;e M;i!e t;e optimist Mas best M;en under strong

in/a!idation pro/ed to be better t;an t;e update Q rep!i ation(

Ce2D&"'!6 Ja/a EER JMeterR Performan e &na!Ssis' Cluster' JBoss(

LISTA DE ABREVIATURAS E SIGLAS

&P$(((((Application Programming Interface EJB((((Enterprise Javabean EJB8+ Enterprise JavaBeans Query Language )#M+( HyperTe t !ar"up Language )##P((HyperTe t Transfer Protocol J&&7( (Java Aut#entication an$ Aut#ori%ation Service JDBC((Java &atabase Connectivity JM7((((Java !essage Service J2D$(((Java 'aming an$ &irectory Interface JP&((((Java Persistence API JP8+( (Java Persistence Query Language J7"(((((Java Server (aces J7%((((Java Specification )e*uest J#&(((((Java Transaction API J@M((((Java +irtual !ac#ine MDB(((!essage,&riven Beans 5%M(((-b.ect,)elation !apping P5J5( Pain -l$ Java -b.ects 78+((((Structure$ Query Language UM+((((E tensible !ar"up Language

10

LISTA DE FIGURAS

F*@0"$ 8? A"E0*-e-0"$ J$ $ EE???????????????????????????????????????????????????????????????????????????????????44 F*@0"$ 4? EBe/(#& 'e /$(e$/e+-& &%Fe-&-"e#$.*&+$#?????????????????????????????????????????????45 F*@0"$ 3? I+-e"$AG& e+-"e & .&+-eB-& 'e (e"!*!-H+.*$: & e+-*-2 /$+$@e" e & %$+.& ???????????46 F*@0"$ 5? EBe/(#& 'e #&.I &-*/*!-$??????????????????????????????????????????????????????????????????????????4J F*@0"$ 6? EBe/(#& 'e #&.I (e!!*/*!-$?????????????????????????????????????????????????????????????????????4K F*@0"$ L? EBe/(#& 'e /M-&'&! E0e "e$#*N$/ L&.I?????????????????????????????????????????????????4K F*@0"$ 7? EBe/(#& 'e EJB S-$-e#e!!????????????????????????????????????????????????????????????????????????34 F*@0"$ J? C*.#& 'e *'$ 'e 0/ S-$-e#e!!???????????????????????????????????????????????????????????????????34 F*@0"$ K? C*.#& 'e *'$ 'e 0/ S-$-e)0#?????????????????????????????????????????????????????????????????????33 F*@0"$ 8<? EBe/(#& 'e EJB S-$-e)0#?????????????????????????????????????????????????????????????????????????35 F*@0"$ 88? C*.#& 'e *'$ 'e 0/ MDB????????????????????????????????????????????????????????????????????????36 F*@0"$ 84? EBe/(#& 'e MDB??????????????????????????????????????????????????????????????????????????????????????36 F*@0"$ 83? De/$".$AG& '$ -"$+!$AG& (e#& .&+-$*+e"??????????????????????????????????????????????37 F*@0"$ 85? EBe/(#& 'e @e"e+.*$/e+-& 'e -"$+!$AG& (e#& .&+-$*+e"?????????????????????3J F*@0"$ 86? EBe/(#& 'e -"$+!$AG& @e"e+.*$'$ (e#& %e$+????????????????????????????????????????3K F*@0"$ 8L? TO(*.& .e+,"*& 'e !e@0"$+A$???????????????????????????????????????????????????????????????????3K F*@0"$ 87? C*.#& 'e *'$ JSF?????????????????????????????????????????????????????????????????????????????????????54 F*@0"$ 8J? E!-"0-0"$ 'e 'e(#&2/e+- '*!-"*%0O'$??????????????????????????????????????????????????????68 F*@0"$ 8K? E!-"0-0"$ 'e 'e(#&2/e+- .&-$#&.$'$??????????????????????????????????????????????????????68

11

F*@0"$ 4<? EBe/(#& 'e ($@*+$AG&????????????????????????????????????????????????????????????????????????????63 F*@0"$ 48? C$/$'$! 'e .$.;e e/ JPA?????????????????????????????????????????????????????????????????????66 F*@0"$ 44? P"&.e!!& 'e "e(#*.$AG& 'e !e!!G&?????????????????????????????????????????????????????????67 F*@0"$ 43? G"$+0#$"*'$'e '$ "e(#*.$AG&???????????????????????????????????????????????????????????????????L< F*@0"$ 45? P,@*+$ *+*.*$# - #* "$"*$ *DeN?????????????????????????????????????????????????????????????????????L5 F*@0"$ 46? D*$@"$/$ 'e .#$!!e! P #* "$"*$ *DeN????????????????????????????????????????????????????????L6 F*@0"$ 4L? D*$@"$/$ 'e */(#$+-$AG& - .#0!-e" .&/ 5 +Q!???????????????????????????????????????LL F*@0"$ 47? D*$@"$/$ 'e e!-$'&! P )*+$#*N$" .&/("$- #* "$"*$ *DeN??????????????????????????L7 F*@0"$ 4J? D*$@"$/$ 'e e!-$'&! P .&+!0#-$" e $#-e"$" .$.;e 'e e+-*'$'e!- #* "$"*$ *DeN????LK F*@0"$ 4K? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ &-*/*!-$ - CMA=? ?74 F*@0"$ 3<? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ (e!!*/*!-$ - CMA= ???????????74 F*@0"$ 38? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ &-*/*!-$ - CMED? ?74 F*@0"$ 34? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ (e!!*/*!-$ - CMED ???????????74 F*@0"$ 33? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ &-*/*!-$ - CMIN????74 F*@0"$ 35? Re!0#-$'& !*/(#*)*.$'& - .&+-"&#e 'e .&+.&""H+.*$ (e!!*/*!-$ - CMIN ???????????73 F*@0"$ 36? Re!0#-$'& '&! -e!-e! *+ $#*'$.$& '& .$.;e??????????????????????????????????????????76 F*@0"$ 3L? Re!0#-$'& '&! -e!-e! "e(#*.$.$& '& .$.;e????????????????????????????????????????????7L

12

LISTA DE GRFICOS

G",)*.& 8? C&/($"$-* & - .&+-"&#e 'e .&+.&""H+.*$ P CMA= P "eE0*!*ARe! POST>C&+)*"/$"Pe'*'&?B;-/#???????????????????????????????????????????????????????????????????????????????????????????73 G",)*.& 4? C&/($"$-* & - .&+-"&#e 'e .&+.&""H+.*$ P CMIN P "eE0*!*ARe! POST>C&+)*"/$"Pe'*'&?B;-/#???????????????????????????????????????????????????????????????????????????????????????????75 G",)*.& 3? C&/($"$-* & - .&+-"&#e 'e .&+.&""H+.*$ P CMED P "eE0*!*ARe! POST>C&+)*"/$"Pe'*'&?B;-/#???????????????????????????????????????????????????????????????????????????????????????????76 G",)*.& 5? C&/($"$-* & - .$.;e 'e e+-*'$'e! - UAC???????????????????????????????????????????????7L G",)*.& 6? C&/($"$-* & '$ $NG& e+-"e *+ $#*'$AG& e "e(#*.$AG&??????????????????????????77

11

LISTA DE TABELAS

T$%e#$ 8? E!(e.*)*.$ARe! J$ $ EE L?????????????????????????????????????????????????????????????????????????48

1<

LISTA DE QUADROS

Q0$'"& 8? A-"*%0-&! '$! -"$+!$ARe!????????????????????????????????????????????????????????????????????????3L Q0$'"& 4? A+&-$ARe! 'e !e@0"$+A$?????????????????????????????????????????????????????????????????????????5<

1?

SUMRIO

INTRODUO???????????????????????????????????????????????????????????????????????????????????????????????????????????? 87
1(1 Estrutura do traba!;o(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1>

8 APRESENTAO DA PLATAFORMA JAVA EE????????????????????????????????????????????????????4<


1(2 &rEuitetura da p!ataforma Ja/a EE((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 21 1(1 Prin ipais te no!ogias da p!ataforma Ja/a EE((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((21

4 ESCALABILIDADE E DESEMPENHO?????????????????????????????????????????????????????????????????????53
2(1 Con eitos(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( <1 2(2 MItri as(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( << 2(1 &nL!ise de desempen;o(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( <<

3 ARQUITETURA DE SOFWARE???????????????????????????????????????????????????????????????????????????????5J
1(1 Esti!os arEuiteturais((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( <> 1(2 PadrNes arEuiteturias(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( <O 1(1 &rEuitetura e Eua!idade((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( <O

5 TTICAS ARQUITETURAIS E CONFIGURAES PARA MELHORAR O DESEMPENHOSESCALABILIDADE????????????????????????????????????????????????????????????????????????????????????6<


<(1 9so do sSn ;ronized(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?0 <(2 Diferentes ontainers Meb((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?0 <(1 9so de interfa e !o a! e remota(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?0 <(< 9so de estrutura de dep!oSment oKa!o ada ou distribu.da((((((((((((((((((((((((((((((((((((((((((((((((((((((((?1 <(? Pro essamento de grande massa de dados(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((?1 <(B 5timizando a amada de persist-n ia(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?2 <(J C!uster((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ?B <(> #;read Poo!(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( B2

6 E=PERIMENTO: MEDIES E COLETA DE DADOS????????????????????????????????????????????L3


?(1 +i/raria iDez K obFeto de estudo(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( B1 ?(2 E,perimento(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( B?

1B ?(1 #aman;o da amostra(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( BO

L RESULTADOS?????????????????????????????????????????????????????????????????????????????????????????????????????????78
B(1 Contro!e de on orr-n ia(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( J1 B(2 Ca ;e de entidades(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( J?

CONCLUSO?????????????????????????????????????????????????????????????????????????????????????????????????????????????7J REFERTNCIAS?????????????????????????????????????????????????????????????????????????????????????????????????????????? J< APTNDICE A - CQ'*@& )&+-e ($"$ & .&+-"&#e 'e .&+.&""H+.*$??????????????????????????????J3 APTNDICE B - CQ'*@& )&+-e ($"$ & .$.;e??????????????????????????????????????????????????????????????K3

1J

INTRODUO
& Meb I um ambiente ada /ez mais sedimentado no mundo( &!gumas pesEuisas' dentre as Euais 2$C(B% C2010D e Porta! %JC2010D' mostram Eue o brasi!eiro tem mais a esso internet e a uti!iza om mais -nfase a ada ano( &!Im do mais' segundo EKBit Empresa C2011' p(2BD' empresa espe ia!izada em pesEuisa do omIr io e!etrAni o' o omIr io e!etrAni o no Brasi! apresentou faturamento de %V 1<'> bi!;Nes em 2010 e a pre/iso para 2011 I de %V 1>'J bi!;Nes( Contudo' esse faturamento de 2010 representa apenas 0'<0P do P$B CProduto $nterno BrunoD' Eue foi %V 1'BJ? tri!;Nes em 2010' segundo dados do $B*E' o Eue demonstra um grande poten ia! de res imento( 5utrossim' a Meb brasi!eira no I usada apenas para /endas' e!a I muito usada para a essar ser/ios go/ernamentais' tais omo pre/id-n ia' portais de ompras dos go/ernos e ser/ios e!eitorais' dentre outros( Considerando Eue a Meb I ada /ez mais usada omo p!ataforma para ap!i aNes dos mais di/ersos tipos e o nWmero de usuLrios res e a ada ano' a ne essidade dessas ap!i aNes es a!arem en ontra resist-n ia em aspe tos a serem tratados nesse traba!;o' omo on orr-n ia' uso e, essi/o do ban o de dados' geren iamento das informaNes dos usuLrios Eue esto usando a ap!i ao' et ( Dessa forma' pretendeKse ana!isar ap!i ao de tLti as arEuiteturais de cac#e de entidades do ban o e o omo a ontro!e de

on orr-n ia no a esso ao ban o podem me!;orar estes reEuisitos tendo omo obFeto de estudo a p!ataforma Ja/a EE( @isto Eue eK ommer e I a!go Eue res e bastante' uti!izouKse um sistema neste esti!o para rea!izar a referida anL!ise( Em resumo' bus aKse responder a seguinte Euesto6 X(8ua! seria o impa to no desempen;o e na es a!abi!idade de um sistema orporati/o Meb Euando uti!izadas as tLti as arEuiteturais de entidades do ban oY & re!e/Zn ia deste traba!;o estL no fato de ser/ir omo embasamento e orientao para arEuitetos e proFetistas de sistemas Meb' de modo Eue e!es possam es o!;er as arEuiteturas Eue sero ap!i adas nos seus proFetos amparados em mediNes sistemLti as e e,peri-n ias formais de a!gumas tLti as usadas para me!;orar o desempen;o e a es a!abi!idade de ap!i aNes Meb de grande porte( E a!Im do mais' faz uma e,tensa pesEuisa sobre os on eitos en/o!/idos em arEuitetura de softMare' medio de desempen;o' dos prob!emas mais omuns de degradao de desempen;o e suas poss./eis so!uNes e das ara ter.sti as e te no!ogias Eue ompNem o Ja/a EE B( ontro!e de on orr-n ia e cac#e de

1>

5 obFeti/o gera! desse traba!;o I ana!isar o impa to da ap!i ao das tLti as arEuiteturais de ontro!e de on orr-n ia e cac#e de entidades no desempen;o e na es a!abi!idade de sistemas orporati/os Meb desen/o!/idos om a p!ataforma Ja/a EE( E os obFeti/os espe .fi os so6 %e/isar os prin ipais on eitos !igados p!ataforma Ja/a EE B' a anL!ise de desempen;o' a arEuitetura de softMare e as tLti as Eue me!;oram o desempen;o de sistemas MebR %ea!izar mediNes de desempen;o' onde sero usadas omo mItri as o

tempo de resposta e a /azo Ct#roug#putD' de um sistema de eK ommer eR &na!isar o resu!tado dessas mediNes para ada tLti a arEuitetura!6 CiD cac#e de entidades do ban o' no Eua! se ana!isarL as tI ni as de oer-n ia K in/a!idao e atua!izaoR e CiiD ontro!e de on orr-n ia no a esso ao ban o de dados' onde se /erifi arL os tipos de ontro!e de on orr-n ia otimista e pessimistaR Para atingir os obFeti/os propostos uti!izaKse' e,p!oratGria e e,perimenta!( $ni ia!mente serL rea!izado !e/antamento bib!iogrLfi o /isando tornar o prob!ema mais e,p!. ito' onde se re!a ionam os prin ipais sistemas Meb( Em seguida serL desen/o!/ido um sistema Meb de omIr io e!etrAni o' se!e ionado de/ido a sua importZn ia e e/id-n ia omentadas anteriormente( Este serL obFeto de estudo em uma e,peri-n ia onde se pretende ana!isar seu desempen;o Euando ap!i adas as tLti as arEuiteturais em te!a( 5 sistema Meb de omer io e!etrAni o serL ;amado de !i/raria iDE= e' a partir de!e' sero rea!izadas mediNes e o!etadas informaNes Eue ser/iro de base para responder a prob!emLti a formu!ada( on eitos sobre Ja/a EE B' anL!ise de desempen;o' arEuitetura de softMare e tLti as Eue podem me!;orar o desempen;o de omo metodo!ogia' uma pesEuisa

1.1 E!-"0-0"$ '& -"$%$#;&


5 restante deste traba!;o estL organizado da seguinte forma6 5 Cap.tu!o 1 e,ibe um bre/e ;istGri o da p!ataforma Ja/a EE' des re/e sua arEuitetura e deta!;a seus ser/ios e te no!ogias(

1O

5 Cap.tu!o 2 enumera os prin ipais desempen;o(

on eitos re!a ionados es a!abi!idade e ao

5 Cap.tu!o 1 omenta sobre os on eitos re!a ionados arEuitetura de softMare e Eua!idade( 5 Cap.tu!o < dis ute as prin ipais tLti as para me!;orar o desempen;oQes a!abi!idade de sistemas Meb( 5 Cap.tu!o ? des re/e o enLrio estudado e omo serL rea!izado o e,perimento' as mediNes e o!eta de dados( 5 Cap.tu!o B onso!ida os resu!tados obtidos durante as mediNes de desempen;o no enLrio sob estudo( &o fina! sero apresentadas as on !usNes e sugestNes para traba!;os futuros(

20

8 APRESENTAO DA PLATAFORMA JAVA EE


7egundo +i et a! C2000 apud 759=&' 200?' p( 1D' nos W!timos anos per ebeKse um grande res imento da $nternet e da 0eb' fenAmeno Eue impa tou fortemente no modo omo as empresas fazem negG io' nas omuni aNes' nos ser/ios disponibi!izados pe!os go/ernos' na forma omo as pessoas estudam' pesEuisam e se di/ertem( Essa importZn ia da 0eb tambIm imp!i ou surgimento de sistemas ada /ez mais omp!e,os( 7ouza C2010' p( 20D define esse tipo de sistema omo ap!i ao orporati/a e informa ainda Eue I um tipo de softMare Eue pretende reso!/er prob!emas de uma empresa omo um todo( Dessa forma' possui reEuisitos parti u!ares' omo es a!abi!idade' segurana' a essibi!idade' dentre outros( De a ordo om a trans rio abai,o' a 5ra !e C2011a' p(1?D tambIm re on;e e a ne essidade de Eue as te no!ogias usadas nos ser/idores de/em pro/er /e!o idade' segurana e onfiabi!idade( E define ainda Eue os sistemas orporati/os so geren iados de forma entra!izada e onstantemente interagem om outros sistemas( [De/e!opers todaS in reasing!S re ognize t;e need for distributed'
transa tiona!' and portab!e app!i ations t;at !e/erage t;e speed' se uritS' and re!iabi!itS of ser/erKside te ;no!ogS( Enterprise app!i ations pro/ide t;e business !ogi for an enterprise( #;eS are entra!!S managed and often intera t Mit; ot;er enterprise softMare( $n t;e Mor!d of information te ;no!ogS' enterprise app!i ations must be designed' bui!t' and produ ed for !ess moneS' Mit; greater speed' and Mit; feMer resour es( \ C5%&C+E'

2011a' p(1?D 7egundo 5ra !e C2011b' p( 1<D' a p!ataforma Java Enterprise E$ition CJa/a EED I onstru.da no topo da p!ataforma Java Stan$art E$ition CJa/a 7ED e pro/- uma interfa e de programao K Application Programming Interface C&P$D e um ambiente em tempo de e,e uo para desen/o!/er e e,e utar ap!i aNes de !argaKes a!a' mu!ti amadas' es a!L/eis' onfiL/eis e seguras( JL *ona!/es C2010' p( <D obser/a Eue Ja/a EE I um onFunto de espe ifi aNes /o!tadas para atender as ne essidades de ap!i aNes orporati/as( Ja/a EE surgiu em 1OOO Euando ainda se ;ama/a J2EE' naEue!a Ipo a foi !aada sua /erso 1(2 Eue possu.a 10 Java Specification )e*uest CJ7%D' Eue so as des riNes das espe ifi aNes propostas ou finais para a p!ataforma Ja/a dis utidas pe!a omunidade de desen/o!/edores e apoiadores da p!ataforma( &tua!mente' sua denominao mudou para Ja/a EE e estL na /erso B' Eue foi !aada em 200O e possui 11 espe ifi aNes( 2a #abe!a 1 abai,o foram e!en adas a!gumas dessas espe ifi aNes' suas /ersNes e o endereo e!etrAni o para sua onsu!ta(

21

Especificao Java EE J%&'(S (e+ Services JSServ"et EJ/ J1% J3%

Verso 6.0 ).) 1.) ).0 3.0 3.1 ).0 1.1

JSR 316 ))* 10, 31* 31. 310 312 ,02

URL http://jcp.org/e /jsr/!etai"#i!$316 http://jcp.org/e /jsr/!etai"#i!$))* http://jcp.org/e /jsr/!etai"#i!$10, http://jcp.org/e /jsr/!etai"#i!$31* http://jcp.org/e /jsr/!etai"#i!$31. http://jcp.org/e /jsr/!etai"#i!$310 http://jcp.org/e /jsr/!etai"#i!$312 http://jcp.org/e /jsr/!etai"#i!$,02

Tabela 1. Especificaes Java EE 6 -o te: 4a!apta!o !e 5678%LVES9 )0109 p. 10'1):

1.2 A"E0*-e-0"$ '$ (#$-$)&"/$ J$ $ EE


& arEuitetura Ja/a EE se baseia na e,ist-n ia de ambientes de e,e uo para as ap!i aNes( & estes ambientes' damos o nome de container( 9m container' segundo 5ra !e C2011a' p( <?D' I a interfa e entre os omponentes Eue e!es ;ospedam e as fun iona!idades de bai,o n./e! espe .fi as da p!ataforma( 2esse sentido' *ona!/es C2010' p( <KJD informa Eue containers so dom.nios !Ggi os Eue possuem um pape! espe .fi o' suportam um onFunto de &P$s e ofere em ser/ios para os omponentes Eue e!es ;ospedam( 2o aso da /erso B de Ja/a EE itamKse' omo e,emp!os' os seguintes ser/ios6

Java Transaction API CJ#&D6 esse ser/io ofere e uma &P$ para demar ao dos !imites das transaNesR

Java Persistence API CJP&D6 ser/io responsL/e! para persist-n ia em Ja/a e in !ui um padro para mapeamento obFetoKre!a iona! e tambIm o Java Persistence Query Language CJP8+D' Eue I usado para onsu!tar obFetos no ban o de dadosR

Bean +ali$ation6 pro/- uma maneira padro de /a!idao dos !assesR

ampos de

obFetos Ja/a' atra/Is de de !arao de restriNes no n./e! de atributos de suas

Java !essage Service CJM7D6 permite a omuni ao ass.n rona atra/Is do uso de mensagensR

Java 'aming an$ &irectory Interface CJ2D$D6 possibi!ita o a esso a ser/ios de nomes e diretGriosR

Java!ail6 ;abi!ita o en/io de eKmai! a partir da ap!i aoR

22

Java Aut#entication an$ Aut#ori%ation Service CJ&&7D6 disponibi!iza ser/io de autenti ao e autorizao baseado em papIisR

/eb services6 possibi!ita suporte a 0eb services atra/Is de 75&P e %E7#R &epen$ency in.ection6 /iabi!iza a inFeo de re ursos' tais omo JM7' unidades de persist-n ia' EJBs' em omponentes geren iados pe!o container1

& espe ifi ao Ja/a EE B' J7% 11B' 7un Mi rosSstems C200Oa' p( ?KBD' ao dis utir a er a da arEuitetura Ja/a EE B' faz refer-n ia "igura 1 para mostrar os re!a ionamentos entre os e!ementos !Ggi os da arEuitetura( 5s containers so representados por retZngu!os' os omponentes esto presentes na metade superior desse retZngu!o e os ser/ios esto na parte inferior(
Figura 1. Arquitetura Java EE

-o te: 4SU7 ;<=R6S>S3E;S9 )00,a9 p. 6:

7egundo 7un Mi rosSstems C200Oa' p( ?KBD' um produto Ja/a EE t.pi o possui um ontainer para ada tipo de omponente da ap!i ao6 CiD ontainer da ap!i ao !iente' in !ui um onFunto de bib!iote as e arEui/os ne essLrios para pro/er inFeo de depend-n ia' segurana e outros ser/ios para ap!i aNes Ja/a 7ER CiiD ontainer app!et' so pro/idos pe!a maioria dos bro0sers para e,e utar omponentes appletR CiiiD ontainer Meb' forne em ser/ios para geren iar e e,e utar omponentes Meb C servlets' Fsp' Fsf' fi!tros' EJB Lite e 0eb servicesDR e Ci/D ontainer Enterprise Javabean CEJBD' I responsL/e! pe!o geren iamento da e,e uo de omponentes Enterprise JavaBeans' isto I' e!e ria

21

no/as instZn ias de EJBs' geren ia seu transaNes' ser/io de nomes' et D(

i !o de /ida e forne e ser/ios Csegurana'

1.3 P"*+.*($*! -e.+&#&@*$! '$ (#$-$)&"/$ J$ $ EE


&p!i aNes Ja/a EE norma!mente so mu!ti amadas' distribu.das e transa ionais( Para dar suporte a esse tipo de ap!i ao a p!ataforma uti!iza di/ersas te no!ogias para as diferentes amadas( Por e,emp!o' na amada de apresentao CMebD podem ser usadas Java Server (aces 2JS(3 e Servlets' na amada de negG ios so usados EJBs e na amada de integrao uti!izaKse o Java Persistence API( Para manter os dados de toda a ap!i ao onsistentes so uti!izadas transaNes( & seguir' temKse a des rio desses on eitos( 8?3?8 J$ $ Pe"!*!-e+.e API & Java Persistence API CJP&D I um frame0or" de persist-n ia baseado em obFetos simp!es' on;e idos omo Pain -l$ Java -b.ects CP5J5D( 5 JP& I uma espe ifi ao Eue possibi!ita riar' re uperar' atua!izar e e, !uir obFetos em ban os de dados re!a ionais de forma transparente' dentre outras fun iona!idades Eue sero abordadas mais adiante( Para mais deta!;es sobre essa espe ifi ao !er 7un Mi rosSstems C200O D( 7ua /erso ini ia! surgiu em 200B obFeti/ando simp!ifi ar e padronizar a persist-n ia de obFetos em Ja/a( &tua!mente' sua /erso I a 2(0 Eue foi !anada em 200O e trou,e bastante f!e,ibi!idade na mode!agem do dom.nio e tambIm in !uiu no/as fun iona!idades( & seguir sero deta!;ados os prin ipais omponentes da JP&6 mapeamento obFetoK re!a iona!' mode!o de entidades' onte,to de persist-n ia' entity manager' entity manager factory4 !inguagem de onsu!tas JP8+ e' por fim' os on eitos de transaNes e loc"s( 8?3?8?8 M$(e$/e+-& O%Fe-&-Re#$.*&+$# 1ORM9 5%M define obFetos( 9m e,emp!o desse mapeamento estL i!ustrado na "igura 2' onde a !asse Editora foi mapeada para a tabe!a editora do ban o de dados( 5s atributos odEditora' nomeEditora e te!efone dessa !asse representam respe ti/amente as o!unas od]editora' nome]editora e te!efone da tabe!a editora( omo mapear o estado e os re!a ionamentos dos obFetos para suas

respe ti/as tabe!as de um ban o de dados re!a iona! e omo rea!izar onsu!tas sobre esses

2< Figura 2. Exemplo e mapeame!to ob"eto#relacio!al

-o te: E"a+orao pr?pria

$ni ia!mente' abe obser/ar Eue JP& assim omo as outras te no!ogias Ja/a EE B' uti!iza o on eito de onfigurao por e, eo' ou seFa' no aso do mapeamento de um obFeto para uma tabe!a sero ne essLrios ser e,p!i itados apenas os atributos Eue possuem nome di/erso da o!una da tabe!a no ban o' pois a regra padro I mapear o nome da tabe!a omo nome da !asse e os nomes das o!unas no ban o omo nomes dos atributos( Para *ona!/es C2010' p( <BD' esse mapeamento I rea!izado atra/Is do uso de metadados Eue podem ser de duas formas6 anotaNes6 onde uma entidade I mar ada .ava 1persistenceR des ritores UM+6 no Eua! o mapeamento I feito em um arEui/o UM+ e,terno Eue serL distribu.do Funtamente om as entidadesR 8?3?8?4 E+-*'$'e!: C&+-eB-& 'e Pe"!*!-H+.*$: Entity Manager e Entity Manager Factory Entidade I uma !asse Fa/a simp!es Eue representa a!gum on eito do dom.nio do negG io e serL mapeada para uma ou mais tabe!as no ban o de dados( 9ma entidade de/e ser anotada om a anotao @Entity ou ser des rita no arEui/o UM+ omo entidade( 9ti!izando o e,emp!o da "igura 2' podeKse notar Eue a !asse Editora possui a!gumas anotaNes 5Entity4 5Table45'ame$Queries4 5I$ e 5Column Eue mapeamento para a tabe!a e suas o!unas( onfiguram o om anotaNes do pa ote

2?

Entity !anager I uma interfa e Eue I imp!ementada pe!o pro/edor de persist-n ia e geren ia o estado e o i !o de /ida de entidades em um onte,to de persist-n ia( Por sua /ez' onte,to de persist-n ia I um onFunto de instZn ias de entidades geren iadas por um entity manager em um dado momento( & Erro6 5rigem da refer-n ia no en ontrada i!ustra a interao entre o onte,to de persist-n ia' o entity manager' a entidade Editora e o ban o de dados( 2essa figura e,istem dois onte,tos de persist-n ia' sendo Eue ada um de!es possui um entity manager( Esses W!timos geren iam as entidades Editoras Eue esto mapeadas em uma tabe!a no ban o( &!Im do mais' em um onte,to de persist-n ia sG pode e,istir uma entidade geren iada om o mesmo identifi ador(
Figura 3. $!tera%o e!tre o co!texto e persist&!cia' o e!tit( ma!ager e o ba!co

-o te: E"a+orao pr?pria

De a ordo om *ona!/es C2010' p( 12JD' o entity manager responde pe!a riao' onsu!ta' a!terao e e, !uso de entidades( 5utrossim' e!e tambIm pode rea!izar b!oEueios Cloc"D sobre as entidades para proteg-K!as ontra a esso on orrente( Esses b!oEueios podem usar tanto o mItodo otimista Euanto o pessimista' Eue sero deta!;ados posteriormente( 9m e,emp!o desse tipo de a esso tabe!a editora( on orrente pode ser obser/ado na "igura 1' no Eua! e,istem duas entidades CEditora 1D Eue referen iam o mesmo registro da

2B

Para ^eit; e 7 ;in ario! C200O' p( 2234 entity manager factory I um omponente Eue ria e disponibi!iza entity manager' ou seFa' di/ersos entity manager podem omparti!;ar o mesmo entity manager factory1 8?3?8?3 J$ $ Pe"!*!-e+.e Q0e"2 L$+@0$@e P JPQL JP8+ I uma !inguagem de onsu!ta sobre entidades persistentes Eue independe do ban o de dados( E!a su edeu a !inguagem EJB8+ e possui sinta,e seme!;ante ao 78+( Contudo' enEuanto 78+ traba!;a sobre o!unas e tabe!as o JP8+ se re!a iona om obFetos e atributos( 2a Gti a de ^eit; e 7 ;in ario! C200O' p( 20>D' as *uerys so ategorizadas em Euatro tipos6 Select' so onsu!tas Eue re uperam o estado persistente de uma ou mais entidades' podendo fi!trar os resu!tadosR Aggregate' so uma /ariao do tipo select Eue agrupam os resu!tados e produzem sumLriosR 6p$a$e' so usados para modifi ao De!ete' para remo/er uma ou mais entidades( @erifi amKse /Lrios e,emp!os desse tipo de onsu!ta na "igura 2( 9m de!es' a onsu!ta [SELECT e ()-! E$itora e /HE)E e1co$E$itora 7 8co$E$itora9 ' por e,emp!o' bus a re uperar as entidades Editoras Eue possuem um odEditora espe .fi o( 8?3?8?5 T"$+!$ARe! #ransao I um onFunto de tarefas Eue de/em ser e,e utadas de forma atAmi a( &!Im do mais' de a ordo om E!masri e 2a/at;e C200?' p( <K?D' transaNes de/em garantir os prin .pios &C$D6 CiD atomi idade' define transao omo sendo uma unidade atAmi a' ou seFa' e!a serL e,e utada por omp!eto ou no o orrerLR CiiD onsist-n ia' determina Eue o ban o de/e passar de um estado onsistente para outroR CiiiD iso!amento' informa Eue a e,e uo de uma transao no de/e sofrer interfer-n ia de nen;uma outra Eue esteFa sendo e,e utada on omitantementeR e Ci/D durabi!idade' orienta Eue as modifi aNes pro/o adas por uma transao efeti/ada no de/em ser perdidas em aso de fa!;a( #ransaNes no atua!izadas ou onte,to de JP& definem o momento em Eue entidades no/as' sero sin ronizadas om o ban o de dados( ondi iona! e

e, !u.das

C^E$#)R7C)$2C&%$5+' 200O' p( 11>D E,istem dois tipos de geren iamento de transaNes suportados pe!o JP&6 transao om re ursos !o ais e transao J#&( EnEuanto o primeiro tipo usa transaNes nati/as do JDBC' o segundo I geren iado pe!o ser/idor Ja/a EE' o Eua! permite a parti ipao de mW!tip!os re ursos e faz o geren iamento do i !o de /ida da transao( C^E$#)R7C)$2C&%$5+' 200O' p( 11>D

2J

@a!e sa!ientar ainda Eue os entity managers geren iados pe!o ontainer sempre usam transaNes J#&' enEuanto aEue!es geren iados pe!a ap!i ao suportam ambos os tipos( 8?3?8?6 C&+.&""H+.*$ e L&.I & espe ifi ao JP& no define !aramente omo o pro/edor de persist-n ia de/erL uidar do a esso on orrente s entidades( ^eit; e 7 ;in ario! C200O' p( 1<<D tambIm itam esse aspe to da espe ifi ao e a res entam Eue uma entidade no de/eria se tornar geren iada por mais de um !uster' por e,emp!o( 8uando esse tipo de on orr-n ia a onte e se faz ne essLrio usar me anismos de b!oEueio Cloc"D para manter os dados onsistentes( JP& 2(0 disponibi!iza dois tipos de loc"6 o otimista e o pessimista( 5 loc" otimista parte do prin .pio Eue uma transao' Eue irL promo/er mudanas em uma entidade' serL a Wni a a faz-K!o em um determinado momento' e sendo assim' no pre isa b!oEuear a entidade atI o momento de sin ronizar as mudanas om o ban o' Eue norma!mente o orre ao fina! de uma transao( 7omente nesse instante /erifi arKseKL o estado dessa entidade no ban o' a pro ura de mudanas desde o momento da sua !eitura( 7e a!guma outra transao a modifi ou durante esse per.odo' ento a transao serL mar ada omo roll bac" e !anarL uma e, eo -ptimisticLoc"E ception( Para des obrir se uma entidade foi modifi ada I uti!izado um sistema de /erso para ada entidade Eue pode sofrer a esso on orrente( 2esse aso serL in !u.do um ampo /erso na entidade Eue de/erL ser anotado omo @Version( E,emp!ifi aKse a uti!izao do loc" otimista na "igura <( 5nde duas instZn ias da !asse *eren iadorDeEstoEue Cger1 e ger2D interagem om o entity manager para re uperar duas instZn ias da entidade EstoEue' Eue representam o mesmo registro da tabe!a estoEue om ;a/e primLria igua! a 1 e o!una Euantidade om /a!or ini ia! 1( Primeiramente' ger1 obtIm a instZn ia estoEue1 a partir do ban o( Em seguida' ger2 re ebe outra instZn ia estoEue1 e ;ama o seu mItodo retirar9nidade' Eue de rementa uma unidade do estoEue' restando 2 unidades( Posteriormente' ger2 persiste as a!teraNes e faz uma ;amada ao mItodo f!us; da interfa e entity manager Eue sin roniza as mudanas no ban o e in rementa o ampo /erso de estoEue( Por fim' ger1 tambIm so!i ita Eue seFa retirada uma unidade do estoEue e tenta ap!i ar essas mudanas no ban o atra/Is do mItodo f!us;( Contudo' ger1 estL om uma /erso desatua!izada de estoEue e dessa forma pro/o a uma e, eo do tipo 5ptimisti +o TE, eption( onte,to de persist-n ia( Contudo' se isso a onte er I responsabi!idade da ap!i ao tratar essa situao( $sso pode a onte er em um ambiente de

2> Figura ). Exemplo e loc* otimista

-o te: E"a+orao pr?pria

ContrLrio a essa fi!osofia do loc" otimista' o pessimista obt-m um loc" de !onga durao sobre uma entidade antes de ini iar o pro essamento sobre e!a( Esse b!oEueio garante Eue nen;uma outra transao onseguirL a!terar ou e, !uir a entidade enEuanto o seu b!oEueio no for !iberado( & uti!izao do loc" pessimista estL i!ustrada na "igura ?( 2a Eua! duas instZn ias da !asse *eren iadorDeEstoEue Cger1 e ger2D interagem om o entity manager para re uperar duas instZn ias da entidade EstoEue' Eue representam o mesmo registro da tabe!a estoEue om ;a/e primLria igua! a 1 e o!una Euantidade om /a!or ini ia! 1( $ni ia!mente' a instZn ia ger1 obtIm a instZn ia estoEue1 a partir do ban o( 2esse instante foi estabe!e ido um !o T sobre o registro no ban o( & seguir' ger2 re ebe outra instZn ia estoEue1 e ;ama o seu mItodo retirar9nidade' Eue de rementa uma unidade do estoEue' restando 2 unidades( 2a seEu-n ia' ger2 tenta persistir as a!teraNes no ban o( PorIm' ger1 FL possui um b!oEueio sobre esse mesmo registro e dessa forma pro/o a uma e, eo do tipo Pessimisti +o TE, eption(

2O Figura +. Exemplo e loc* pessimista

-o te: E"a+orao pr?pria

Esses b!oEueios podem ser uti!izados tanto em n./e! de entity manager omo tambIm de *uery( Em n./e! de entity manager' os seguintes mItodos rea!izam o b!oEueio6 & mItodos( find(Class<E> entidade, Object chavePK,Lock ode!y"e #odo$lo%&eio' @ lock(Object entidade, Lock ode!y"e #odo$lo%&eio'@ refresh(Object entidade, Lock ode!y"e #odo$lo%&eio'R

!asse *eren iadorEstoEueEJB na "igura B e,emp!ifi a a uti!izao desses 2e!a e,istem os mItodos retira8uantidadeEmEstoEue5timista' Eue e retira8uantidadeEmEstoEuePessimista2

retira8uantidadeEmEstoEuePessimista1

rea!izam a mesma tarefa de retirar uma unidade do estoEue( Contudo' o primeiro faz essa tarefa usando o loc" otimista' enEuanto os outros dois uti!izam o pessimista(
Figura 6. Exemplo e m,to os que reali-am .oc*

10

-o te: E"a+orao pr?pria

JL para b!oEueio em n./e! de *uery' temKse o mItodo setLock ode(Lock ode!y"e #odo$lo%&eio' Eue onfigura o loc" para determinada *uery( *ona!/es C2010' p( 1B1D enumera os tipos de b!oEueios poss./eis parZmetro Lock ode!y"e6 5P#$M$7#$C6 usa o loc" otimistaR 5P#$M$7#$C]"5%CE]$2C%EME2#6 usa o loc" otimista e fora o in remento da /erso na entidadeR PE77$M$7#$C]%E&D6 usa o loc" pessimista sem a ne essidade de !er os dados no/amente ao fina! da transao para obter o loc"R PE77$M$7#$C]0%$#E6 usa o loc" pessimista e fora a seria!izao entre transaNes na atua!izao de entidadesR PE77$M$7#$C]"5%CE]$2C%EME2#6 usa o loc" pessimista e fora o in remento da /erso da entidadeR 252E6 espe ifi a Eue nen;um tipo de loc" serL usado( onforme o

11

8?3?4 EJB 5%&C+E C2011a' p( 1OJD define Enterprise JavaBeans omo omponentes do !ado ser/idor Eue en apsu!am a !Ggi a de negG io da ap!i ao( Comp!ementando essa definio' %ubinger e BurTe C2010' p( >D informam Eue EJBs destinamKse para ap!i aNes orporati/as distribu.das e *ona!/es C2010' p( 1JOD a res enta Eue e!es uidam das transaNes e da segurana( 5s EJBs e,e utam em um container Eue forne e di/ersos ser/ios para esses omponentes' tais omo geren iamento do i !o de /ida' geren iamento de transaNes' segurana' inFeo de depend-n ia' pooling' suporte a on orr-n ia' et ( E,istem' basi amente' dois tipos de EJBs6 os session beans e os message,$riven beans( CMDBD( 8?3?4?8 Se!!*&+ Be$+! 7o omponentes Eue imp!ementam a !Ggi a de negG io e e,pNem suas interfa es !o a! eQou remota ou omo 0eb services( 5s session beans' por sua /ez' podem ser stateless' stateful ou singleton( 7omente o primeiro tipo de session beans serL deta!;ado nesse traba!;o' pois os demais no sero usados no estudo sobre anL!ise de desempen;o( 5 stateless no mant-m estado da sesso om o !iente entre as ;amadas de seus mItodos( Esses EJBs so ideais para rea!izar tarefas Eue podem ser on !u.das em uma Wni a ;amada de um mItodo( 5utrossim' para ada EJB stateless' o ontainer mantIm um determinado nWmero de instZn ias em um pool na memGria e estas so omparti!;adas entre os !ientes' em momentos distintos( +ogo' esse pool imp!i a Eue para ada reEuisio o container irL repassar a ;amada para Eua!Euer EJB dispon./e! e no ;L garantia Eue uma prG,ima reEuisio serL atendida pe!a mesma instZn ia( 9m e,emp!o de EJB state!ess pode ser /isto na "igura J( 2e!a e,iste um tre ;o do EJB *eren iadorEditorasEJB Eue possui dois mItodos6 C1D adi ionarEditora' Eue in !ui uma no/a Editora no ban oR C2D !istar#odas&sEditoras' Eue retorna uma !ista editoras adastradas( om todas as

12 Figura /. Exemplo e EJ0 1tateless

-o te: E"a+orao pr?pria

5s EJBs stateless possuem um

i !o de /ida definido

onforme "igura >( 5nde

ini ia!mente no e,iste nen;uma instZn ia

riada pe!o container( Em seguida' esse irL

instan iar um EJB e inFetar os re ursos so!i itados e' por fim' serL disparado um e/ento PostConstruct' Euando o bean passa para o estado !et#o$,)ea$y Pool( 2esse ponto e!e estL preparado para atender as reEuisiNes( 8uando essa instZn ia no for mais ne essLria' serL !anado um e/ento Pre&estroy(
Figura 2. 3iclo e vi a e um Stateless

-o te: 4RU/<75ER@ /URAE9 )0109 p. *,:

Por outro !ado' o stateful propNeKse a manter as informaNes de estado entre uma interao e outra( 2esse aso ada EJB stateful serL dedi ado a um Wni o !iente( Contudo' Euando muitos !ientes esti/erem a essando o sistema imp!i arL em muitas instZn ias na memGria do ser/idor' o Eue irL !e/LK!o a retirar a!gumas dessas instZn ias da memGria e persistir os seus estados( Esse pro esso re ebe a denominao de passi/ao( Caso

11

a!guma dessas instZn ias passi/adas seFa no/amente uti!izada' serL rea!izado pro edimento in/erso( Esse tipo de EJB I idea! para tarefas Eue possuem di/ersas etapas' as Euais dependem do estado das etapas anteriores( 5 i !o de /ida de um stateful onsiste de di/ersas fases' onforme "igura O( 2o in. io' no e,istem instZn ias do EJB atI a ;egada de uma reEuisio' Euando o container irL instan iar' inFetar os re ursos reEuisitados e !anar o e/ento PostConstru t( 2esse ponto' o EJB estL pronto para atender as reEuisiNes( PorIm' se o bean passar erto tempo inati/o' o container irL passi/LK!o para e onomizar os re ursos atI o !iente no/amente reEuisitLK!o ou atI a onte er um time out' onde' nesse aso' o bean serL destru.do( 5utro f!u,o a!ternati/o seria a onte er uma o e/ento Pre&estroy e o bean serL destru.do(
Figura 4. 3iclo e vi a e um 1tateful

;amada ao mItodo anotado

om

@(e#ove enEuanto o bean estL no estado !et#o$,)ea$y( Caso isso a ontea' serL !anado

-o te: 4RU/<75ER@ /URAE9 )0109 p. 6.:

Como e,emp!o desse tipo de session bean temKse na "igura 10 um tre ;o do EJB stateful Carrin;oCompraEJB( Essa !asse possui o mItodo adi ionar$temCarrin;o Eue in !ui informaNes de um produto no arrin;o de ompras de um usuLrio( EnEuanto a sesso desse usuLrio no e,pirar e!e terL essa informao do arrin;o no EJB stateful1

1< Figura 15. Exemplo e EJ0 1tateful

-o te: E"a+orao pr?pria

5 u!timo tipo de session bean I o singleton Eue I instan iado apenas uma Wni a /ez por ontainer e permane e ati/o durante toda a e,e uo da ap!i ao( 8?3?4?4 Me!!$@e-D"* e+ Be$+! 1MDB9 7o omponentes Eue possibi!itam o pro essamento de mensagens assin ronamente pe!a ap!i ao Ja/a EE( PodeKse on !uir tambIm Eue esses atuam omo ou/idores de fi!as ou tGpi os de mensagens Ja/a Message 7er/i e CJM7D( 5s MDBs so in/o ados pe!o container Euando uma no/a mensagem ;ega( Contudo' e!es tambIm podem en/iar mensagens JM7( De a ordo om *ona!/es C2010' p( <01D' os MDBs no imp!ementam interfa es !o ais ou remotas' mas por outro !ado e!es imp!ementam a interfa e Fa/a,(Fms(Message+istener( E!e ainda omenta Eue !ientes no podem in/o ar esse tipo de EJB diretamente( E a!Im do mais' esses omponentes no armazenam estado e podem a essar re ursos geren iados pe!o container como' por e,emp!o' outros EJBs ou one,Nes JDBC( 5 i !o de /ida de um MDB estL des rito na "igura 11( 5nde o container ini ia riando a!gumas instZn ias' sobre as Euais I in/o ado o mItodo anotado om 5PostConstruct e depois passam para o estado rea$y1 2esse estado esto aptas a re eber as mensagens

1?

atra/Is do mItodo on!essage( E por W!timo' antes de serem destru.das' I ;amado o mItodo anotado om 5Pre&estroy(
Figura 11. 3iclo e vi a e um 670

-o te: 45678%LVES9 )0109 p. *0.:

5 tre ;o de Gdigo apresentado na "igura 12 i!ustra um e,emp!o simp!es de um MDB( 2e!e' o EJB PedidoMDB estL onfigurado omo ou/idor do tGpi o [FmsQtopi oPedido\ e Euando um mensagem for en/iada om esse destino' o container in/o arL o mItodo

onMessage passando a mensagem Eue ;egou(


Figura 12. Exemplo e 670

-o te: E"a+orao pr?pria

8?3?4?3 T"$+!$ARe! EJB dL suporte a transaNes de duas formas6 imp!i itamente' atra/Is de demar ao de transaNes de !arati/a' onde as transaNes so geren iadas pe!o ontainer ou e,p!i itamente' atra/Is de demar ao de transaNes programLti a' onde as transaNes so geren iadas pe!o bean' usando Java Transaction API J#&( Essas duas possibi!idades sero deta!;adas a seguir( 2o aso de transao geren iada pe!o container' de!egaKse para o container a

demar ao do in. io e fim de uma transao' onforme i!ustra a "igura 11( Entretanto' o omportamento do pro essamento das transaNes pode ser modifi ado uti!izando atributos

1B

de transao atra/Is de anotaNes ou UM+ $eployment $escriptor( 5s atributos e seus signifi ados esto e!en ados no 8uadro 1( A-"*%0-& %E89$%ED S*@+*)*.$'& Esse I o atributo pa$r:o( E!e define Eue um mItodo de/er ser ;amado om uma transao' porIm se esta no e,istir o container irL riar uma no/a( %E89$%E7]2E0 5 container sempre irL riar uma no/a transao( 7e FL e,istir uma' esta serL suspensa e uma no/a transao serL ini iada' Euando esta for on !u.da' a transao suspensa serL retomada( 79PP5%#7 #ransaNes no so obrigatGrias nesse aso( 7e FL e,istir uma transao esta serL usada( Caso ontrLrio' o mItodo serL e,e utado sem nen;uma transao( Esse I idea! para mItodos sG de !eitura( M&2D&#5%_ 2esse aso' I obrigatGria a e,ist-n ia de uma transao antes de ;amado o mItodo( 7e e!a FL e,istir' serL usada' aso no e,ista' serL !anada uma e, eo java)*ejb*E+$!ransaction(e%&iredE)ce"tion( 25#]79PP5%#ED 2E@E% 7e FL e,istir uma transao' esta serL suspensa' enEuanto o mItodo I e,e utado( Caso no e,ista' nada a onte e( 2o permite o uso de transaNes( 7e FL e,istir uma transao serL !anada uma e, eo java)*ejb*E+$E)ce"tion( Caso e,e uo o orrerL norma!mente sem transao(
8ua ro 1. Atributos as tra!saes -o te: 45678%LVES9 )0109 p. )61')6) :

ontrLrio' a

& espe ifi ao EJB re omenda Eue o Entity!anager' seFa a essado dentro do es opo de uma transao( Por isso' Euando um EJB a essar entidades persistentes de/em ser usado somente os atributos de transaNes %E89$%ED' %E89$%E7]2E0 e M&2D&#5%_( $sso para ertifi ar Eue os a essos ao ban o o orrero sempre em uma transao( PorIm' uma e, eo a essa regra I Euando uti!izado o onte,to de persist-n ia estendido om um e.b stateful( C%9B$2*E%R B9%^E' 2010' p( 2O1K2O2D

1J Figura 13. 7emarca%o a tra!sa%o pelo co!tai!er

-o te: E"a+orao pr?pria

9m e,emp!o da uti!izao do geren iamento de transao pe!o container pode ser /isto na "igura 1<( 2esse e,emp!o' a demar ao do ini io e fim da transao I feita pe!o container e ompreende ada mItodo( Entretanto o omportamento da transao I a!terado pe!a in !uso das anotaNes 5TransactionAttribute(

1> Figura 1). Exemplo e gere!ciame!to e tra!sa%o pelo co!tai!er

-o te: E"a+orao pr?pria

2o aso de o orrer a!gum erro durante a e,e uo das tarefas Eue fazem parte de uma transao' sG serL feito rollbac" da transao Euando ;ou/er onfigurao e,p!. ita para Eue isso a ontea( #oda/ia' se a inteno do desen/o!/edor I uti!izar o geren iamento de transaNes geren iado manua!mente( pe!o 2esse bean' tipo de serL ne essLrio de in !uir transao' a a anotao interfa e @!ransaction ana,e#ent(!ransaction ana,e#ent!y"e*$E-.' no EJB Eue serL geren iado geren iamento java)*transaction*/ser!ransaction serL usada para demar ar as transaNes( 5 geren iamento de transao pe!o bean estL e,emp!ifi ado na "igura 1?' na Eua! as demar aNes de ini io e fim de transaNes so feitas pe!o desen/o!/edor atra/Is da interfa e .ava 1transaction16serTransaction(

1O Figura 1+. Exemplo e tra!sa%o gere!cia a pelo bea!

-o te: E"a+orao pr?pria

8?3?4?5 Se@0"$+A$ *ona!/es C2010' p( 2BOD demonstra na "igura 1B um t.pi o enLrio de segurana em ap!i aNes Ja/a EE(
Figura 16. T9pico ce!:rio e segura!a

-o te: 45678%LVES9 )0109 p. )6,:

2esse enLrio' o usuLrio irL a essar uma interfa e grLfi a' Eue pode ser s0ing ou Meb' a Eua! irL so!i itar suas reden iais Cnome do usuLrio e sua sen;aD e ento pro ederL a sua autenti ao a essando o Java Aut#entication e Aut#ori%ation Service CJ&&7D( 9ma /ez rea!izada a autenti ao' o usuLrio re eberL uma identifi ao ;amada principal e' Euando esse usuLrio tentar a essar um EJB seguro' essa sua principal serL repassada de

<0

forma transparente para o EJB' Eue farL uma /erifi ao se este usuLrio tem permisso para a essar o EJB( Comp!ementando esse entendimento' %ubinger e BurTe C2010' p( 2<1D informam Eue as espe ifi aNes Ja/a EE e EJB forne em um onFunto de ser/ios de segurana Eue podem ser integrados ap!i ao tanto de forma de !arati/a Esses ser/ios in !uem6

omo programati amente(

&utenti ao6 refereKse ao pro esso de /erifi ar se o usuLrio e,iste no sistema e se suas reden iais forne idas esto orretasR

&utorizao6 depois de autenti ado' o pro esso de autorizar funo(

onsiste em

;e ar se o usuLrio possui permisso para a essar determinado re urso ou

& segurana de !arati/a define os ritIrios de autorizao atra/Is de anotaNes ou UM+ $eployment $escriptor( Esse pro esso en/o!/e atribuir permissNes para mItodos ou todo o EJB' de !arar papIis e modifi ar a identidade temporariamente( &s anotaNes usadas para isso esto !istadas na 8uadro 2 abai,o( A+&-$AG& `%o!es&!!oMed `Permit&!! `DenS&!! `De !are%o!es `%un&s U!$'$ +& Bean 7im 7im 7im 7im 7im U!$'$ 7im 7im 7im 2o 2o e/ De!."*AG& +ista os papIis Eue tem permisso para e,e utar um mItodo ou o bean inteiro Con ede permisso para Eue todos possam e,e utar um mItodo ou o bean inteiro 2o permite Eue ninguIm possa e,e utar um mItodo ou o bean inteiro Define papIis para /erifi aNes de segurana Muda temporariamente o pape! atribu.do ao usuLrio
8ua ro 2. A!otaes e segura!a -o te: 45678%LVES9 )0109 p. )20:

/M-&'&!

Por outro !ado' a segurana programLti a permite definio de regras de segurana mais deta!;adas' omo por e,emp!o' permissNes espe .fi as para um b!o o de Gdigo dentro de um mItodo( Para isso' se faz ne essLrio onseguir a esso ao E+$Conte)t ou 0essionConte)t' onde se pode e,e utar os mItodos isCaller1n(ole4:' Eue irL /erifi ar se o usuLrio Eue estL a essando o mItodo possui determino pape!' e ,etCallerPrinci"al4:' Eue retorna a interfa e Princi"al om informaNes Eue identifi am o usuLrio(

<1

8?3?3 Se" #e-! 7o !asses Ja/a usadas para estender as fun iona!idades do ser/idor Meb e gerar onteWdo dinami amente( Servlets atendem a reEuisiNes e produzem uma resposta( E!as tipi amente uti!izam o proto o!o )##P' mas podem uti!izar outros( &!Im do mais' todo Servlet de/e imp!ementar a interfa e java)*servlet*0ervlet' Eue define os mItodos do i !o de /ida( 8?3?5 J$ $ Se" e" F$.e! Java Server (aces CJ7"D I um frame0or" de omponentes grLfi os para ap!i aNes Meb( 5ra !e C2011' p( 101D omp!ementa informando Eue J7" onsistem em6 uma &P$ para representao de omponentes e geren iamento do seu estado' tratamento de e/entos' /a!idao do !ado ser/idor' on/erso de dados' na/egao entre pLginas' suporte para interna iona!izao e a essibi!idadeR bib!iote a de tags para adi ionar omponentes a paginas Meb e para one tar omponentes a obFetos do ser/idor( *ona!/es C2010' p( 2J>D informa Eue as prin ipais partes do J7" so6 (aces Servlet6 I o servlet ontro!ador prin ipa! da ap!i ao( E!e re ebe todas as reEuisiNes endereadas ao sistema' faz o de/ido pro essamento e en amin;a tato para gerao da resposta om para um ontro!ador espe .fi oR %enderizadores6 geram a /isua!izao de omponentes grLfi osR Con/ersores6 obFeti/am on/erter as entradas dos usuLrios em formu!Lrios na forma de string para a!gum tipo de dados de Ja/a CByte' Timestamp' et DR @a!idadores6 so responsL/eis pe!a ertifi ao de Eue os /a!ores forne idos pe!o usuLrio so /a!ores permitidosR !anage$ Beans6 so obFetos geren iados pe!o J7" Eue armazenam estado da pLgina' ontro!am o f!u,o de na/egao e tambIm podem in !uir regras de negG iosR PLginas e omponentes6 as pLginas ont-m os itens grLfi os Eue sero onstru.dos

gerados e e,ibidos ao

!iente( Esses itens grLfi os podem ser

omo omponentes Eue depois so ompostos para formar as pLginas( &o ;egar uma reEuisio endereada ap!i ao J7"' esta segue um f!u,o de

pro essamento padro definido na espe ifi ao e Eue I ;amado de i !o de /ida J7"' onforme se pode /isua!izar na "igura 1J(

<2 Figura 1/. 3iclo e vi a J1F

-o te: 4SU7 ;<=R6S>S3E;S9 )00,+9 p. .,:

"oram definidas seis fases no referido i !o de /ida' as Euais so deta!;adas abai,o6 )estore vie06 ria ou re arrega a Lr/ore de omponentes em memGria no

ser/idor' representado os omponentes grLfi os da pLginaR Apply )e*uest +alues6 atua!iza os passados pe!o !ienteR Process +ali$ations6 pro essa /a!idaNes e on/ersNes sobre os dadosR 6p$ate !o$el +alues6 depois de on/ertidos e /a!idados os dados' agora e!es so atribu.dos aos obFetos do mode!o Eue foram !igados aos omponentes da pLginaR Invo"e Application6 I nessa fase Eue as aNes ou e/entos in/o ados na pLgina sero pro essadosR )en$er )esponse6 gera a resposta para o !iente' Eue pode ser em Eua!Euer !inguagem de mar ao' tais omo )#M+ ou UM+( Essa fase ainda sa!/a o estado da /iso para possibi!itar sua restaurao em reEuisiNes subseEaentes( ( omponentes da Lr/ore om os dados

<1

4 ESCALABILIDADE E DESEMPENHO
Com sistemas ada /ez mais omp!e,os e !ientes mais e,igentes' a!Im da

g!oba!izao' Eue pro/- uma grande Euantidade de usuLrios aos sistemas atuais' fazKse imperati/o p!aneFar e proFetar as ap!i aNes tendo em /ista os reEuisitos de Eua!idade de ser/io' tais omo desempen;o e es a!abi!idade( Esses' apesar de intimamente !igados' possuem definiNes diferen iadas( & seguir' sero deta!;ados seus on eitos e a!gumas mItri as(

2.1 C&+.e*-&!
4?8?8 De!e/(e+;& 2a !iteratura podem ser en ontradas di/ersas definiNes sobre desempen;o( Bass et al C2001' p( OOD faz uma definio mais amp!a deste termo( Pontua Eue desempen;o se refere a tempo' mais espe ifi amente a Euanto tempo um sistema !e/a para responder Euando um e/ento Cinterrupo' mensagem ou reEuisiNes de usuLriosD o orre( Mais su into' Mar ;ioni C2010' p( OD' informa Eue o termo [performan e\ refereKse rapidez om Eue uma ap!i ao pode ser e,e utada( 2esse traba!;o adotaremos a primeira definio de desempen;o por entender Eue e!a I mais deta!;ada( 2esse reEuisiNes )##P( 4?8?4 E!.$#$%*#*'$'e 7egundo Cade e 7;ei! C2010' p( 20K21D' es a!abi!idade I a apa idade de um sistema' sem nen;uma a!terao' ontinuar atendendo os reEuisitos de Eua!idade' enEuanto a arga aumenta( Esses autores ainda omentam Eue um sistema atinge sua es a!abi!idade mL,ima Euando estL tratando as reEuisiNes de determinado nWmero de usuLrios e no onsegue responder em um tempo a eitL/e!( 2esse sistema para aumentar sua apa idade( JL Mar ;ioni C2010' p( 10K11D define Eue es a!abi!idade se refere apa idade de um sistema' Eue estL re ebendo uma arga res ente' de aumentar o t#roug#put tota! Euando re ursos so adi ionados( & es a!abi!idade pode ser !assifi ada omo6 /erti a! Cscaling upD6 Euando se adi ionam no/os re ursos de ;ardMare para a mesma mLEuina Cpor e,emp!o' in !uiKse mais memGria ou dis oDR ;orizonta! Cscaling outD6 Euando se adi ionam no/as mLEuinas ao sistema' amp!iando a apa idade gera! do sistema( aso' serL ne essLrio adi ionar re ursos ao aso' os e/entos Eue o sistema pre isa responder sero

<<

Cada um desses tipos de es a!abi!idade tem seus pontos fortes e fra os( Mar ;ioni C2010' p( 11D e,p!i a Eue es a!abi!idade /erti a! gera!mente e,ige um gasto maior para ompra de ;ardMare mais poderoso Cpor e,emp!o' sistema ou em sua omprando de ser/idor om mais pro essadores e memGriaD( Contudo' imp!i a em pou a ou nen;uma mudana no Gdigo do onfigurao( Por outro !ado' a ;orizonta! ne essita de menor in/estimento' uma /ez Eue podem ser ompradas mLEuinas mais baratas( 2o entanto' este tipo de es a!abi!idade e,ige um mode!o de programao mais omp!e,o( %eso!/euKse adotar a definio de Mar ;ioni porEue e!a deta!;a o tipo de es a!abi!idade Eue se in/estiga nesse traba!;o6 a es a!abi!idade ;orizonta!(

2.2 MM-"*.$!
Mar ;ioni C2010' p( OK10D omenta Eue o desempen;o I medido' prin ipa!mente' em termos de tempo de resposta e t#roug#put( tempo de resposta6 pode ser entendido omo o tempo Eue um sistema !e/a para rea!izar um tarefa para o usuLrio( Em um sistema Meb' por e,emp!o' o tempo de resposta ompreende desde o momento anterior ao o en/io da reEuisio )##P atI a ;egada da resposta )##P omp!eta' ou seFa' a partir do instante Eue um usuLrio so!i ita a!gum re urso atI a re epo pe!o !iente da resposta gerada pe!o sistemaR t#roug#put6 I a Euantidade de pro essamento rea!izado em um dado per.odo de tempo( & unidade depende do tipo de pro essamento Eue estL sendo rea!izado( Por e,emp!o' no aso de ser/idores Meb' a medida pode ser reEuisiNes )##P por segundo ou Euantidade de bStes pro essadas por segundo' FL no aso de sistemas transa ionais podem ser usadas transaNes por segundo( )aines C200B' p(210K211D a res enta uma outra mItri a' a uti!izao de re ursos( Com essa mItri a podeKse medir Euais os re ursos do sistema esto saturados ou pou o uti!izados' tais omo CP9' memGria' $Q5' pools et ( 2esse traba!;o sero usadas apenas as duas primeiras mItri as' /isto Eue o onsumo de re ursos I a!go espe .fi o de ada ap!i ao e depende da sua onstruo e perfi! de uso(

2.3 A+,#*!e 'e 'e!e/(e+;&

<?

Baseado na moti/ao da tese de ^oune/ C200?' p( 1D' obser/aKse Eue os sistemas atuais de/em' a!Im de forne er todos os ser/ios e as funNes esperadas fun ionando orretamente' atender as e,pe tati/as de seus usuLrios em termos de desempen;o( &inda de a ordo es a!abi!idade6 estimati/a baseada em intuioR mode!agem de desempen;oR teste de arga( om ^oune/ C200?' p( <D' tr-s diferentes a!ternati/as t-m sido ustoQbenef. io em termos de desempen;o e

usadas para tentar obter o me!;or

4?3?8 E!-*/$-* $ %$!e$'$ e/ *+-0*AG& 2esse aso so feitas estimati/as baseadas em intuiNes' e,peri-n ias passadas'

opiniNes de espe ia!istas e regras a$ #oc( b a opo mais rLpida e barata' mas seus resu!tados no so onfiL/eis e apresentam um a!to ris o( Pode ser usado em proFetos peEuenos e Eue no seFam r.ti os' onde os reEuisitos de Eua!idade no so to r.gidos( 4?3?4 M&'e#$@e/ 'e De!e/(e+;& Menas I C200<' p( 1?D a!erta Eue I mais fL i! garantir desempen;o e es a!abi!idade se e!es forem pensados FL na fase de proFeto do sistema( E!e informa ainda Eue mode!os so genera!izaNes do sistema e dis ute aspe tos de di/ersos mode!os baseados em redes de fi!as' Eue mapeiam o sistema em termos de fi!as inter one tadas' dentre os Euais' itamKse6 MarTo/ mo$elsR single *ueue systemsR single class M@&R *ueue mo$els 0it# multiple classesR *ueuing mo$els 0it# loa$ $epen$ent $evicesR non pro$uct,form *ueuing mo$els( omenta Eue mode!os de desempen;o so usados para omo os re ursos do sistema so usados pe!a arga de

JL ^oune/ C200?' p( BD mode!o representa a maneira

predizer o desempen;o e a es a!abi!idade de um sistema sob estudo( &!Im do mais' o traba!;o e aptura os prin ipais fatores Eue determinam o omportamento do sistema( Comp!ementando os mode!os des ritos anteriormente por Menas I' ^oune/ C200?' p( BD afirma Eue os dois prin ipais tipos de mode!os usados atua!mente so as redes de fi!as e

<B

as redes de Petri esto Lsti as( &pesar da possibi!idade de uti!izao desses mode!os nas fases ini iais do desen/o!/imento' e!es t-m omo pontos negati/os' sua omp!e,idade para mapear os atuais sistemas distribu.dos e o prob!ema de e,p!oso de estados' ou seFa' Euanto mais deta!;es e aspe tos o mode!o tenta mapear' mais estados sero ne essLrios para mode!ar esses aspe tos' portanto e,iste um aumento e,ponen ia! desses estados( Por fim' ressa!taKse Eue mode!agem de desempen;o I um assunto bastante abrangente e omp!e,o e estL a!Im do es opo desse traba!;o( Para mais informaNes !er ^oune/ C200?D e Menas I C200<D( 4?3?3 Te!-e! 'e C$"@$SDe!e/(e+;& )a!i!i C200>' p( B0D define teste de arga omo o pro esso de submeter um

omponente ou o sistema omo um todo a uma determinada arga( E a res enta ainda Eue a!gumas de suas metas in !uem identifi ar garga!os e /erifi ar Euais os pontos pass./eis de me!;oria de desempen;o( & instrumentao dos testes de desempen;o I rea!izada atra/Is de modernas ferramentas' tais omo ferramentas de teste de arga e benc#mar"( 4?3?3?8 Fe""$/e+-$! 'e -e!-e 'e .$"@$ ^oune/ C200?D e,p!i a Eue testes de arga so rea!izados om ferramentas

espe .fi as' as Euais geram uma arga sobre o sistema e medem seu desempen;o( Essas ferramentas podem simu!ar mi!;ares de usuLrios /irtuais' os Euais simu!am o omportamento de usuLrios reais' interagindo om o sistema( EnEuanto o teste I rea!izado' omponentes so monitorados e mItri as so o!etadas( Contudo' ^oune/ C200?D !embra Eue esse teste possui a!guns pontos negati/os6 no pode ser e,e utado nas fases ini iais do desen/o!/imento e' a!Im do mais' e!e I bastante aro' pois para sua rea!izao serL ne essLrio p!aneFamento' tempo e um ambiente fie! ao ambiente de produo( De a ordo om )aines C200B' p( 1OJD' e,istem di/ersas ferramentas' tanto omer iais omo open sour e Eue podem ser usadas para rea!izar o teste de arga6 Mer urS +oad%unner C omer ia!D6

cMMM(mer urS( omQusQprodu tsQperforman eK enterQ!oadrunnerdR X 5pen7#& CgrLtis e open sourceD6 cMMM(opensta(orgdR X &pa ;e JMeter CgrLtis e open sourceD6 c;ttp6QQFaTarta(apa ;e(orgQFmeterd R X #;e *rinder CgrLtis e open sourceD6 c;ttp6QQsour eforge(netQproFe tsQgrinderd R X Pus;#o#est #estMaTer CgrLtis e open sourceD6 cMMM(pus;totest( omd R

<J

5utro teste de arga Eue pode ser feito sem ne essariamente o sistema estar pronto I o benc#mar"( 4?3?3?4 Be+.;/$"I ^oune/ C200?' p( ?D define Eue benc#mar" pode ser ap!i ado para testar diferentes a!ternati/as de ambientes e p!ataformas C #ar$0are e soft0areD no Eua! o sistema serL imp!antado( 5 benc#mar" e,e uta uma arga de traba!;o artifi ia! sobre a p!ataforma Eue estL sendo testada e mede seu desempen;o e a es a!abi!idade( ^oune/ C200?' p( ?D ita ainda Eue' no onte,to de sistemas de omponentes

distribu.dos' foram desen/o!/idos di/ersos benc#mar"s( Contudo' a maioria de!es fa!;ou em atender seus obFeti/os' em /irtude de uma ou mais das seguintes razNes6 argas de traba!;o proFetadas para me!;orar o desempen;o de produtos parti u!aresR argas de traba!;o usadas no so rea!istas o sufi iente e ser/ios importantes no so testados ou so testados de forma insufi ienteR argas usadas possuem garga!os de es a!abi!idade(

<>

3 ARQUITETURA DE SOFWARE
7;aM e *ar!an C1OOB' p(1D omentam Eue medida Eue o taman;o e omp!e,idade de sistemas de softMare aumentam' o proFeto e a espe ifi ao da estrutura gera! do sistema se tornam uma Euesto mais importante Eue a es o!;a de a!goritmos e estruturas de dados de omputao( 5s autores ainda omp!ementam Eue' de forma abstrata' arEuitetura de softMare en/o!/e a des rio de e!ementos Eue ompNem os sistemas' as interaNes entre esses e!ementos' padrNes Eue guiam sua omposio e restriNes sobre esses padrNes( 5utra refer-n ia !Lssi a sobre o assunto I Bass' C!ements e ^azman C2001' p( 21D' Eue define arEuitetura de softMare omo a estrutura ou as estruturas de um sistema' o Eua! ompreende e!ementos de softMare' propriedades e,ternamente /is./eis desses e!ementos e o re!a ionamento entre e!es( Por entender Eue essa W!tima definio I mais gera! reso!/euKse adotLK!a nesse traba!;o( & arEuitetura I a!go e,tremamente importante para o desen/o!/imento de sistemas robustos( Bass' C!ements e ^azman C2001' p( 2BD enumeram tr-s razNes para a importZn ia da arEuitetura de softMare6 CiD omuni ao om os sta"e#ol$ers;4 a arEuitetura representa uma abstrao omum do sistema Eue a maioria dos sta"e#ol$ers pode usar omo base para entendimento mWtuo' nego iaNes e omuni aoR CiiD de isNes ini iais de proFeto' a arEuitetura de softMare manifesta de isNes de proFeto sobre o sistema em estLgios ini ias do desen/o!/imento( Essas de isNes tero um impa to profundo no traba!;o de engen;aria de softMare Eue /em a seguir e tambIm no su esso do sistemaR CiiiD abstraNes transfer./eis de um sistema' a arEuitetura onstitui um mode!o re!ati/amente peEueno e de fL i! entendimento sobre estruturado e omo seus e!ementos traba!;am Funtos( omo o sistema estL

3.1 E!-*#&! $"E0*-e-0"$*!


De a ordo om Pressman C200B' p( 211D' esti!os arEuiteturais des re/em uma

ategoria de sistemas Eue abrange6 CiD um onFunto de omponentes Eue rea!izam a funo Eue I reEuisito do sistemaR CiiD um onFunto de one tores Eue possibi!ita omuni ao e
1

7taTe;o!ders so todos aEue!es interessados no desen/o!/imento do sistema' Eue sero afetados direta ou indiretamente por e!e(

<O

oordenao entre os

omponentesR CiiiD restriNes Eue definem

omo os

omponentes

podem ser integrados para formar o sistemaR e Ci/D mode!os semZnti os Eue possibi!itam ao proFetista entender as propriedades gerais do sistema( E!e ainda omenta Eue o obFeti/o de um esti!o I estabe!e er uma estrutura para todos os omponentes do sistema( 7o e,emp!os de esti!os arEuiteturais6 pipes an$ filters' mode!o em amadas'

repositGrios e interpretadores( Para mais deta!;es !er Bass' C!ements e ^azman C2001D

3.2 P$'"Re! $"E0*-e-0"*$!


7egundo Bass' C!ements e ^azman C2001' p( 2<D' padro arEuitetura! I a des rio de tipos de e!ementos e suas re!aNes om um onFunto de restriNes sobre omo e!es podem ser usados( Pressman C200B' p( 212K211D desta a Eue os padrNes arEuiteturais se diferen iam dos esti!os da seguinte forma6 CiD o es opo do padro I menos amp!o' ou seFa' enfo a um aspe to da arEuitetura em /ez de toda a arEuiteturaR CiiD um padro impNe uma regra na arEuiteturaR CiiiD padrNes tendem a atender tGpi os omportamentais espe .fi os no onte,to arEuitetura!(

3.3 A"E0*-e-0"$ e E0$#*'$'e


&tributos de Eua!idade tais omo desempen;o' segurana' disponibi!idade' to!erZn ia s fa!;as e manutenibi!idade' de/em ser onsiderados atra/Is de todo o pro esso de desen/o!/imento CproFeto' imp!ementao e $eployD( Para Bass' C!ements e ^azman C2001' p( J1D' a arEuitetura I r.ti a para rea!izao de di/ersos reEuisitos de Eua!idade de um sistema( Esses reEuisitos de/em ser proFetados em n./e! de arEuitetura e' atra/Is de!a' podem ser a/a!iados( 3?3?8 T,-*.$! $"E0*-e-0"$*! De a ordo om Ba ;mann' Bass e ^!ein C2002' p( 2D' tLti a arEuitetura! I uma de iso de proFeto Eue aFuda a atingir uma resposta para um atributo de Eua!idade espe .fi o( Entendimento seme!;ante I adotado por Bass' C!ements e ^azman C2001' p( 100D' Eue definem uma tLti a omo uma de iso de proFeto Eue inf!uen ia o ontro!e da resposta de um atributo de Eua!idade( Esses autores ainda ategorizam as tLti as em6 disponibi!idade' modifi ao' desempen;o' segurana e testabi!idade( & anL!ise nesse traba!;o serL fo ada nas tLti as de desempen;o(

?0

5 TTICAS ARQUITETURAIS E CONFIGURAES PARA MELHORAR O DESEMPENHOSESCALABILIDADE


2a !iteratura re ente en ontramKse di/ersos traba!;os fo ados em EuestNes Eue podem me!;orar o desempen;o de ap!i aNes Ja/a EE( 2esse ap.tu!o sero enumeradas a!gumas tLti as' tI ni as e onfiguraNes Eue podem me!;orar a es a!abi!idade e o desempen;o de ap!i aNes Ja/a EE de grande es a!a(

).1 U!& '& synchronized


0ang C200>a' p(2D omenta Eue um dos prin ipais prob!emas da no es a!abi!idade /erti a! I o #ot loc"( Esse o orre Euando muitas t#rea$s disputam pe!o mesmo monitor' fazendo Eue a Java +irtual !ac#ine CJ@MD e o sistema opera iona! gastem muito tempo para geren iar esse ontro!e( Para ontornar esse prob!ema' o autor orienta Eue6 b!o os sync#roni%e$ usados seFam o menor poss./e!R e/itar usar loc" em mItodos estLti osR usar em situaNes de on orr-n ia' preferen ia!mente' as estruturas !i/re de loc" de Ja/a Cpa ote .ava1util1concurrent1atomicD' a partir da sua /erso ?(0R

).2 D*)e"e+-e! containers De%


^oune/ et1 al C200<' p( ?KBD rea!izou testes usando o bec#mar" 7PECF&pp7er/er200<2 e o ser/idor JBoss' onde ana!isou o desempen;o de diferentes containers Meb C#om at <(1' #om at ?(0 e JettSD' tanto em ambiente de cluster omo usando um Wni o nG ser/idor' e obte/e omo resu!tado Eue a /erso ?(0 do #om at e,ibiu me!;ores tempos de resposta' sendo' em mIdia' 20P mais rLpido Eue a /erso <(1' seguido pe!o JettS' Eue foi apro,imadamente 1<P mais rLpido Eue essa /erso <(1(

).3 U!& 'e *+-e")$.e #&.$# e "e/&-$


7egundo os e,perimentos rea!izados por ^oune/ et1 al C200<' p( ?KBD' o uso de interfa es !o ais diminui o tempo de resposta e a uti!izao da CP9' em funo da e!iminao do over#ea$ de omuni ao remota atra/Is da rede( Em um ambiente om um Wni o ser/idor Cstan$,aloneD' o gan;o no tempo de resposta foi de apro,imadamente 1?P em re!ao ao desempen;o om interfa es remotas e o per entua! de uti!izao de CP9

7PECF&pp7er/er200< I um ben ;marT

omer ia! do Stan$ar$ Performance Evaluation Corp(

C7PECD( 5 site ofi ia! do 7PECF&pp7er/er200< I6 c;ttp6QQMMM(spe (orgQF&pp7er/er200<d

?1

aiu de >2P para J1P Euando foram usadas interfa es !o ais( JL em um ambiente de !uster' os gan;os no tempo de resposta foram menores' na fai,a de 11P(

).) U!& 'e e!-"0-0"$ 'e 'e(#&2/e+- .&-$#&.$'$ &0 '*!-"*%0O'$


0ang C200>b' p( 2D ana!isou o desempen;o de ap!i aNes Ja/a EE em re!ao organizao dos ser/idores Meb e de ap!i ao( E!e /erifi ou duas situaNes6 a primeira' ;amada de oKa!o ada' onde os ser/idores de ap!i ao e Meb estariam na mesma mLEuina' e a segunda' onde os ser/idores poderiam estar em mLEuinas distintas' onforme "igura 1> e "igura 1O(
Figura 12. Estrutura e eplo(me!t istribu9 a

-o te: 4(%759 )000+9 p. ): Figura 14. Estrutura e eplo(me!t co#aloca a

-o te: 4(%759 )000+9 p. ):

Em seus testes' e!e on !uiu Eue a estrutura oKa!o ada es a!a me!;or e atribui esse gan;o ao menor over#ea$ para rotear ada ;amada de EJB e a menor Euantidade de mensagens para sin ronizar os ser/idores(

).+ P"&.e!!$/e+-& 'e @"$+'e /$!!$ 'e '$'&!


0ang C200>b' p( ?D ita omo a!ternati/a /iL/e! para pro essar grandes Euantidades de dados' o mode!o de programao distribu.do !ap)e$uce( De a ordo om Dean e *;emaMat C200<' p( 1D' esse I imp!ementado usando duas funNes6 o !ap' onde I ap!i ada

?2

uma funo sobre todos os itens de uma o!eo e' ao fina!' retorna uma !ista om os resu!tados desse pro essamento' e o )e$uce' Eue para!e!o' e produz o resu!tado fina!( 5 autor ainda o!eta' agrupa' ordena e faz a!gum omenta Eue e,iste uma ferramenta pro essamento sobre os resu!tados de dois ou mais !aps' Eue foram e,e utados em ;amada Ha$oop<' Eue I um sistema de arEui/os distribu.do open source' mantido pe!o grupo &pa ;e< e Eue imp!ementa o mode!o !ap)e$uce(

).6 O-*/*N$+'& $ .$/$'$ 'e (e"!*!-H+.*$


2essa seo enumeramKse a!gumas otimizaNes Eue podem ser ap!i adas a amada de persist-n ia( 5?L?8 C&+-"&#e 'e .&+.&""H+.*$ E!masri e 2a/at;e C200?' p( <1OD omentam Eue as tI ni as de ontro!e de

on orr-n ia so usadas para assegurar a propriedade da no interfer-n ia ou iso!amento de transaNes Eue so e,e utadas ao mesmo tempo( E,istem di/ersas tI ni as para rea!izarem esse ontro!e' porIm nesse traba!;o sero dis utidas tr-s de!as6 CiD ontro!e pessimista6 nesse aso' as t#rea$sQtransaNes pre isam adEuirir os b!oEueios sobre os dados antes da sua es rita( Essa opo possibi!ita pou a on orr-n ia em /irtude dos b!oEueios( & ;ipGtese tida omo /erdadeira nesse I Eue sempre ;a/erL situao de on orr-n ia e' dessa forma' I pre iso e/itar Eue essa situao o orraR CiiD ontro!e otimista6 E!masri e 2a/at;e C200?' p( <10D informam Eue nessa tI ni a as atua!izaNes so ap!i adas s Gpias !o ais dos dados' Eue so mantidas para ada transao( &o fina! da e,e uo' o orre uma /erifi ao para ertifi ar se essas atua!izaNes podem pro/o ar in onsist-n ia se aso essa in onsist-n ia possa o orrer' ento a transao serL ap!i adas'

abortada' aso ontrLrio' e!as podem ser efeti/adas( @a!e sa!ientar Eue essas Gpias no so mantidas apGs a efeti/ao das transaNes( 2a prLti a' norma!mente e,iste um ampo de /erso para ada re urso Eue pode ser omparti!;ado' Eue I in rementado a ada efeti/ao de transao( Ento' a /erifi ao omentada anteriormente apenas onsu!ta esse ampo e ana!isa se a /erso Eue estL ao fina! da transao I a mesma do re urso omparti!;ado( Essa a!ternati/a' apesar de e!iminar o usto dos loc"s' imp!i a a!to usto de memGria para manter as /Lrias Gpias dos dados( 2esse ontro!e' assumeKse
1

;ttp6QQ;adoop(apa ;e(orgQ ;ttp6QQMMM(apa ;e(orgQ

<

?1

Eue raramente ;a/erL situao de on orr-n ia e' se esta o orrer' de/eKse apenas refazer a transaoR CiiiD ontro!e m/ ou mu!tiK/erso6 essa tI ni a I seme!;ante tI ni a otimista

porEue mant-m di/ersas /ersNes dos itens de dados' entretanto' essas /ersNes so mantidas mesmo apGs a efeti/ao das transaNes( Essas /ersNes mais antigas podem ser usadas para a!gumas operaNes de !eitura( Para mais informaNes sobre ontro!e de on orr-n ia mu!tiK/erso !er E!masri e 2a/at;e C200?' p( <2>K<10D( 5?L?4 P$@*+$AG& ^eit; e 7 ;in ario! C200O' p( 1O1D definem paginao omo uma tI ni a Eue apresenta uma o!eo de dados ao usuLrio' sob a forma de uma tabe!a de taman;o fi,o' Eue age omo uma Fane!a des!izante sobre o resu!tado de onsu!tas ao ban o de dados( Comp!ementando' Mar ;ioni C2010' p( 1J0D e,p!i a omo imp!ementar essa tI ni a em JP&( Para isso' de/em ser usados os mItodos set2irst(es&lts(' e #a)(es&lts(' da !asse 3&ery( Mar ;ioni fez um e,perimento onde onsu!ta/a uma tabe!a om 10(000 registros( 9sando paginao e!e obte/e mu!tip!i ado por Euatro( 5 e,emp!o da "igura 20 mostra a imp!ementao dessa tI ni a em JP&( 5 mItodo listarTo$asAsE$itorasPorPagina retorna uma !ista de editoras !imitada a 20 C/inteD unidades por pLgina(
Figura 25. Exemplo e pagi!a%o

omo resu!tado Eue o t#roug#put da ap!i ao era

-o te: E"a+orao pr?pria

Contudo' ^eit; e 7 ;in ario! C200O' p( 1O<D a!ertam Eue esses mItodos no de/em ser usados em onsu!tas Eue possuem .oins re!a ionados om o!eNes Cone,to,many e many,

?<

to,manyD porEue essas

onsu!tas podem retornar /a!ores dup!i ados e essas dup!i atas

podem impossibi!itar o posi ionamento no resu!tado( 5?L?3 N$/e' E0e"2 De a ordo om Mar ;ioni C2010' p( 1J1D' as name$ *uery pro/-em uma me!;oria em termos de desempen;o porEue e!as so prIK ompi!adas pe!o pro/edor de persist-n ia omo parte do $eploy ou durante a fase de ini ia!izao da ap!i ao( Em seus testes' Mar ;ioni on !uiu Eue name$ *uery me!;oram o desempen;o em' apro,imadamente' 10P( E,emp!ifi amKse a definio e uso de name$ *uery na "igura 2 e na "igura 20( 2a primeira figura' a entidade Editora possui Euatro definiNes' dentre e!as e,emp!o' a name$ *uery [Editora(find&!!\ Eue retorna todas as editoras listarTo$asAsE$itorasPorPagina [todas]editoras\( 5?L?5 C$.;e Mar ;ioni C2010' p( 1JBD e,p!i a Eue cac#e representa o estado atua! do ban o de dados em memGria ou no dis o do ser/idor de ap!i ao( Comenta ainda Eue ;L diferentes tipos de cac#e e Eue ada um ser/e a propGsitos distintos( Em JP& e,istem dois n./eis de cac#e' onforme se pode obser/ar na "igura 216 CiD cac#e de primeiro n./e!6 I o cac#e rea!izado pe!o onte,to de persist-n ia Eue I referen iado pe!o entity manager e mant-m refer-n ias para todas as entidades Eue esto geren iadas C^E$#) e 7C)$2C&%$5+' 200O' p( 1B2D( E,istirL apenas uma instZn ia de ada entidade geren iada para uma dada identidade Cid Eue representa a ;a/e primLria da tabe!aD( Esse cac#e e/ita a rea!izao de onsu!tas ao ban o para entidades Eue FL esto geren iadas em memGria( &!Im do mas' esse cac#e I riado Funtamente om o entity manager e o onte,to de persist-n ia' onde as entidades permane em atI Eue seFam e,p!i itamente es/aziadas ou atI a destruio do entity managerR CiiD cac#e de segundo n./e!6 I aEue!e rea!izado pe!o entity manager factory( Esse tambIm I ;amado por a!guns autores C^eit; e 7 ;in ario!' 200O' p( 1B2D de cac#e omparti!;ado' pois os dados das entidades desse cac#e so riados a partir do omparti!;ados por todos os entity manager Eue foram I riada uma *uery a partir da itaKse' omo adastradas no name$ *uery

ban o de dados( JL na segunda' e,iste um e,emp!o de uti!izao' onde dentro do mItodo

mesmo entity manager factory4 conforme ilustra a (igura =;( Esse cac#e I riado Funto om o entity manager factory' onde as entidades permane em atI Eue seFam e,p!i itamente es/aziadas ou atI a destruio do entity manager

??

factory1 5utro aspe to re!e/ante desse cac#e I a possibi!idade de a esso distribu.do entre /Lrios membros de um cluster( Contudo' essa distribuio pre isa ser usada om uidado Euando e,istem muitos nGs no cluster4 em funo do over#ea$ de pro essamento e de transporte na rede e,igido para sin ronizar os estados do cac#e de ada nG do cluster(
Figura 21. 3ama as e cac;e em J<A

-o te: 4AE<3B e S=B<7=%R<6L9 )00,9 p. 36):

&na!isando a espe ifi ao JP& em 7un Mi rosSstems C200O ' p( 101D' per ebeKse a orientao de Eue JP& de/e pro/er suporte ao cac#e de segundo n./e!' ontudo e!e de/e ser imp!ementado pe!o pro/edor de persist-n ia( 2as duas prG,imas 7ubseNes serL feita uma dis usso entrada nas so!uNes de cac#e pro/idas pe!o Jboss' pois esse I um dos !.deres no seguimento de ser/idores de ap!i ao' a!Im de ser open source e possuir uma /asta omunidade de o!aboradores( 5?L?5?8 C$.;e 'e e+-*'$'e! b o cac#e Eue /isa manter em memGria as entidades' as Euais so obFetos Eue representam tabe!as do ban o de dados em JP&( 7egundo Mar ;ioni C2010' p( 1>2D' esse cac#e se benefi ia do fato de Eue uma !in;a de tabe!a do ban o' Eue representa o estado de uma entidade' pode ser b!oEueada Cloc"e$D Euando da o orr-n ia de atua!izaNes( Dessa forma' as atua!izaNes do cac#e !e/aro em onta esse b!oEueio' o Eue serL Wti! para garantir a oer-n ia do cac#e entre os nGs do cluster( 5?L?5?4 C$.;e 'e E0e"2! Para Mar ;ioni C2010' p( 1>0D' esse cac#e manipu!a as *uery JP8+Q78+ Eue in !uem tanto os parZmetros omo as entidades en/o!/idas no resultset( Para uti!izar esse tipo de cac#e I ne essLrio6

?B

de !arar

no

arEui/o

de

onfigurao

da

unidade

de

persist-n ia

Cpersisten e(,m! or ;ibernate( fg(,m!D Eue serL uti!izado cac#e de *uery6 <"ro"erty na#e45hibernate*cache*&se6%&ery6cache5 val&e45tr&e57> > espe ifi ar Euais *uerys sero armazenadas em cac#e( 9ti!izaKse a anotao6 @3&ery8int(na#e 4 5or,*hibernate*cacheable5, val&e 4 5tr&e5' ( 5 geren iamento dessa cac#e I feito atra/Is de timestamp para de idir se a *uery em cac#e estL ou no obso!etaR Mar ;ioni C2010' p( 1>2D a!erta ainda Eue esse tipo de cac#e de/e ser usado om bastante uidado( E!e se destina primariamente para dados Eue so sG de !eitura ou Eue raramente so atua!izados(

)./ Cluster
0ang C200>b' p( 1D define cluster omo uma te no!ogia bem estabe!e ida Eue forne e a!ta disponibi!idade e ser/ios es a!L/eis' a!Im de to!erZn ia a fa!;as( 9m cluster onsiste em /Lrios omputadores' ;amados de nGs' inter!igados e agindo omo um todo( Esses nGs di/idem o pro essamento das reEuisiNes( 9m dos prin ipais omponentes de uma so!uo de cluster Meb I um ba!an eador de arga' Eue segundo 0ang C200>b' p( ?D' pode ser imp!ementado em ;ardMare ou em softMare e norma!mente in !uem omo fun iona!idades6 a!goritmos de ba!an eamento de arga6 obFeti/am de idir reEuisiNes dos !ientes entre os omponentes do clusterR ;e agem de disponibi!idade6 /isa des obrir Euando um dos nGs fa!;ou ou estL sobre arregadoR session stic"iness6 Euando o ba!an eador re on;e e e asso ia as sessNes dos usuLrios ao nG do cluster Eue o estL atendendo( 5?7?8 Ge"e+.*$/e+-& 'e !e!!G& e/ $/%*e+-e 'e .#0!-e" 5 geren iamento das sessNes CinformaNes de estado Eue se refere a um Wni o usuLrioD de forma es a!L/e! FL I a!go desafiador em um Wni o ser/idor( Portanto' em ambiente de !uster essa tarefa tem sua omp!e,idade amp!iada imensamente( &s estratIgias mais on;e idas para !idar om essa situao em um !uster so6 afinidade de ser/idores e rep!i ao de sesso( omo distribuir as

?J

5?7?4 A)*+*'$'e 'e !e" *'&" 1Session stickiness9 & estratIgia afinidade de ser/idores fun iona dire ionando todas as reEuisiNes de uma sesso de usuLrio para o mesmo ser/idor membro do cluster( Para 0ang C200?' p( ?D' omo o estado da sesso fi a armazenado na memGria de erta instZn ia do ser/idor' o me!;or !ugar para se!e ionar Eua! ser/idor de/erL atender determinada reEuisio I o ba!an eador de arga( Contudo' 0ang ainda a res enta Eue se uma dessas instZn ias fa!;ar' todos os dados da sesso sero perdidos( Para !idar om esse prob!ema' de/e ser usada a rep!i ao de sesso( 5?7?3 Re(#*.$AG& 'e !e!!G& & rep!i ao de sesso onsiste em manter uma ou mais Gpias dos dados da sesso para Eue outros ser/idores possam tratar a reEuisio de um ser/idor Eue fa!;ou( 7egundo 0ang C200?' p( BD' o pro esso de rep!i ao de sesso a onte e em di/ersas etapas' onforme "igura 226 1. etapas 1' 2 e <6 Euando um usuLrio /isita uma pLgina pe!a primeira /ez' o ser/idor ria um obFeto de sesso e o armazena em a!gum meio de persist-n ia para uso posteriorR 2. etapa 16 depois de riada a sesso' o ser/idor en/ia ao broMser um

identifi ador C$DD atra/Is de coo"ie e' posteriormente' esse id serL en/iado Funtamente om as prG,imas reEuisiNesR 3. etapas ?' B' J e >6 Euando uma fa!;a o orre' o ba!an eador irL dete tar e en/iarL as reEuisiNes seguintes para um outro ser/idor Eue irL re uperar a sesso e assim poderL atender adeEuadamente o usuLrio(
Figura 22. <rocesso e replica%o e sess%o

-o te: 4(%759 )00.9 p. 6:

E,istem di/ersas opNes dispon./eis de rep!i ao( & diferena entre e!as I a forma omo a sesso serL rep!i ada e persistida para posterior uti!izao( 0ang C200?' p( BK10D dis ute essas opNes6

?>

rep!i ao om armazenamento em ban o de dados6 onde os dados da sesso so armazenados em ban o de dados e a ser/idor' e!e irL ada reEuisio Eue ;ega ao onsu!tar o ban o de dados para re uperar os dados da

sesso( Essa opo apresenta o pior desempen;o e es a!abi!idadeR rep!i ao em memGria entre todos os ser/idores6 nesse aso' a sesso fi arL em memGria e serL mantida uma Gpia em ada ser/idor do cluster( Essa possui me!;or desempen;o Eue a anterior' ontudo' ainda e,iste um grande over#ea$ para manter uma Gpia em ada ser/idorR rep!i ao em memGria entre pares Cbu$$y replicationD6 pare ido om a opo anterior' mas om a diferena da sesso de um ser/idor ser armazenada em um par' ou seFa' apenas mais um ser/idor( 9m prIKreEuisito dessa a!ternati/a I uti!izar a afinidade de ser/idor( E,peri-n ias rea!izadas por Mar ;ioni C2010' p( 21?D mostraram Eue a rep!i ao em memGria entre pares possui me!;or desempen;o( & me!;oria no t#roug#put foi de 10P Euando omparado om a opo de rep!i ao entre todos os nGs do cluster( De a ordo om Mar ;ioni C2010' p( 212D' o desempen;o da rep!i ao de sesso pode ser me!;orada Euando so !e/adas em onsiderao a!gumas estratIgias6 sobres re/er o mItodo is odified8 essa opo de/e ser usada Euando os dados da sesso so mantidos em um eFb stateful( 2esse aso' de/e ser imp!ementado o mItodo om a assinatura "&blic boolean is odified('( &ntes de rep!i ar o bean o container /erifi arL se e!e imp!ementa esse mItodo( Em aso positi/o' o container ;ama is odified e' somente se e!e retornar true' a rep!i ao serL rea!izadaR uso de rep!i ao em memGria entre paresR onfigurar Euando serL disparada a rep!i ao e a sua granu!aridade( Essa opo sG se ap!i a Euando a sesso I mantida no HttpSession( 5?7?3?8 Q0$+'& '*!($"$" $ "e(#*.$AG& 5s momentos em Eue sero disparadas as mensagens de rep!i ao de/em ser onfigurados no arEui/o .boss,0eb1 ml( &s opNes poss./eis so6 7E#]&2D]*E#6 nesse aso' a rep!i ao poderL ser disparada mesmo se no o orrer mudana no onteWdo da sesso' basta apenas Eue e!a seFa a essada( & rep!i ao o orrerL se forem usados ambos os mItodos set-ttrib&te e ,et-ttrib&teR

?O

7E#]&2D]252]P%$M$#$@E]*E#6 essa I a opo padro e' seme!;ante aEue!a anterior' irL disparar a rep!i ao Euando for usado o mItodo set-ttrib&te ou o mItodo ,et-ttrib&te' mas' nesse aso' a rep!i ao sG serL efeti/ada se for a essado um obFeto de tipo no primiti/o Ctipos primiti/os in !uem Integer4 Long4 String et DR

7E#6 nesse ;amado(

aso a rep!i ao sG o orrerL se o mItodo set-ttrib&te for

Mar ;ioni C2010' p( 220D rea!izou a!guns testes para omparar o desempen;o dessas a!ternati/as e ;egou a on !uso Eue Euando usada a opo 7E# e nen;uma das reEuisiNes ;amar set-ttrib&te o desempen;o serL 1?P me!;or Eue a opo padro( 5?7?3?4 G"$+0#$"*'$'e '$ "e(#*.$AG& & granu!aridade se refere a o Eu- de/e ser rep!i ado' e tambIm de/e ser onfigurado no arEui/o .boss,0eb1 ml( 2esse aso' as opNes i!ustradas na "igura 21 so6 7E77$526 indi a Eue a sesso por inteiro de/e ser rep!i ada Euando Eua!Euer um dos seus atributos for a!terado' ou seFa' a sesso I um onFunto de pares c ;a/e' atributod e' nessa opo' todo o onFunto serL rep!i ado Euando Eua!Euer atributo for modifi ado( Essa I opo padroR &##%$B9#E6 nessa a!ternati/a somente a!guns atributos sero rep!i ados( & es o!;a de Euais sero rep!i ados I baseada no fato de Eue a!guns podero sofrer a!teraNes dentro de um onFunto em Eue a maioria dos atributos no sero a!terados( Para uma sesso Eue possui grandes Euantidades de dados' no Eua! parte desses' raramente serL modifi ada' essa opo diminui sobremaneira a Euantidade de dados Eue sero rep!i adosR "$E+D6 nesse aso' somente a!guns ampos dentro dos obFetos Eue esto na sesso sero rep!i ados( &na!isando a "igura 21' per ebeKse Eue essa opo I ainda mais espe .fi a Eue a anterior e possui grande poten ia! para reduzir o trLfi o de dados rep!i ados( Contudo' para usar essa granu!aridade de/eKse antes preparar a !asse Ja/a para permitir Eue o cac#e dete te Euando o orrer a!terao em ampos dos obFetos CM&%C)$52$' 2010' p( 221D(

B0 Figura 23. =ra!ulari a e a replica%o

-o te: 4;%R=B<67<9 )0109 p. ))1:

7egundo Mar ;ioni C2010' p( 221D' os seus e,perimentos mostram Eue a opo "$E+D possui desempen;o 10P me!;or Eue 7E77$52(

5?7?5 J%&!! C$.;e De a ordo om Mar ;ioni C2010' p( 1J>D' Jboss Cac#e? I um frame0or" Eue pro/- um cac#e em cluster' o Eua! I omp!etamente transa iona! e rep!i ado( b baseado na bib!iote a multicast J*roupsB' Eue trata de toda a infraestrutura de cluster( 5 autor omuni ao entre os nGs do omenta ainda Eue esse frame0or" suporta rep!i ao ou in/a!idao'

Euando o orrer uma atua!izao nos obFetos do cac#e' omuni ao s.n rona ou ass.n rona entre os nGs Eue fazem parte do cac#e distribu.do' e os mItodos otimista e pessimista de ontro!e de on orr-n ia no a esso aos dados omparti!;ados no cac#e distribu.do( 5 JBoss Ca ;e foi uti!izado atI a /erso ? do JBoss( & partir da /erso B e!e foi substitu.do pe!o $nfinispan' Eue serL dis utido na prG,ima 7eo( Para uti!izLK!o' primeiro de/eKse ati/LK!o omo cac#e de segundo n./e! e' em seguida' fazKse ne essLrio definir Euais entidades sero in !u.das no cac#e atra/Is da anotao6 @Cache(&sa,e 4 CacheConc&rrency0trate,y*!(-.0-C!1O.-L, re,ion 4 5re,iao5' ( Mar ;ioni C2010' p( 1>0D informa Eue o atributo CacheConc&rrency0trate,y define omo as entidades sero armazenas e re uperadas do cac#e( Para esse atributo e,istem duas estratIgias6 Transactional6 garante tratamento transa iona! aos dados do cac#e( Essa a!ternati/a pode ser usada para dados Eue so !idos onstantemente e I r.ti a a pre/eno para Eue e!es no se tornem obso!etos em transaNes on orrentes' nos raros asos de atua!izaoR

MMM(Fboss(orgQFboss a ;e MMM(Fgroups(org

B1

)ea$,only6 essa estratIgia de/e ser usada para dados Eue nun a mudam( 7eu desempen;o I me!;or Eue o anterior(

Mar ;ioni C2010' p( 20BD a res enta Eue o Jboss Ca ;e pode ser usado para rep!i ar informao de entidades' sessNes HTTP e stateful session beans atra/Is do !uster( Para otimizar o Jboss Cac#e para ada situao' de a ordo om Mar ;ioni C2010' p( 20BD' fazKse ne essLrio entender omo as atua!izaNes so transmitidas para os membros do cluster' omo e!es iro ref!etir essas a!teraNes e tambIm omo serL tratada a on orr-n ia entre os nGs do cluster( &s atua!izaNes dos dados do cac#e podem ser transmitidas de duas formas6 sin ronamente' onde ada instZn ia do cac#e en/ia suas mudanas para os demais nGs e' antes de retornar' tem Eue aguardar as onfirmaNes de todosR assin ronamente' no Eua! as mudanas so en/iadas e' imediatamente' retorna sem aguardar as a!teraNes foram ap!i adas( 5utro aspe to I a forma omo as mudanas no cac#e so ref!etidas nos demais nGs6 rep!i ao' no Eua! os dados de ada cac#e so rep!i ados para os demais membros( 2esse aso' os ustos CtrLfego de rede' onsumo de memGria e ontro!eD das mensagens de rep!i ao so bastante a!tosR in/a!idao' onde ada membro en/ia uma mensagem apenas informando as ;a/es dos dados Eue esto obso!etos e' nesse aso' o re eptor dessa mensagem de/erL apagar esse dado do seu cac#e e' posteriormente' Euando esse dado for reEuisitado' de/erL re uperLK!o a partir do ban o( E por fim' omo esse cac#e I omparti!;ado por di/ersos nGs do cluster pode o orrer on orr-n ia na a!terao de determinados dados e pro/o ar in onsist-n ias( Para tratar esse prob!ema' o Jboss Ca ;e uti!iza tr-s opNes de tI ni as de ontro!e de on orr-n ia6 CiD otimistaR CiiD pessimistaR e CiiiD m/ 5?7?6 I+)*+*!($+ $nfinispanJ I uma p!ataforma de cac#e distribu.do' open source4 es a!L/e! e Eue apresenta a!ta disponibi!idade( E!e pode e,e utar tanto em modo !o a! Euanto distribu.do( ( onfirmaNes dos outros nGs informando Eue as

MMM(Fboss(orgQinfinispan

B2

"erraro C2010D

omenta Eue $nfinispan substituiu o JBoss Ca ;e

omo ser/io de

cac#e distribu.do em cluster a partir da /erso B do JBoss( Dentre as mudanas Eue a onte eram' e!e enumera6 CiD JBoss Ca ;e no serL mais distribu.do Funtamente om o JBossR CiiD o modo [distribuio\ do $nfinispan substitui as funNes do [ bu$$y replication\ do JBoss Ca ;eR CiiiD o pro/edor de cac#e JBoss Ca ;e do )ibernate foi substitu.do pe!o seu eEui/a!ente no $nfinispanR

).2 T;"e$' P&&#


Para )aines C200B' p( 1B<K1BBD' uma das a!ternati/as de tuning Eue mais pode me!;orar o desempen;o de uma ap!i ao Meb I o taman;o do pool de t#rea$s1 Esse taman;o ontro!a o nWmero de reEuisiNes Eue sero pro essadas on orrentemente( 8uando ;ega uma reEuisio ao ser/idor' um pro esso re ebe essa reEuisio e a o!o a em uma fi!a de e,e uo( Em seguida' essa reEuisio I remo/ida dessa fi!a por uma t#rea$ Eue irL pro essLK!a( )aines C200B' p( 1B<K1BBD omenta ainda Eue se o taman;o desse poo! I muito

peEueno' as reEuisiNes iro esperar muito na fi!a para serem pro essadas( Por outro !ado' se o taman;o I muito grande a CP9 irL gastar muito tempo ;a/eando os onte,tos entre as /Lrias t#rea$s( 5 autor deta!;a os passos Eue de/em ser e,e utados para se obter o taman;o Gtimo do poo!( Para mais informaNes /er )aines C200B' p( 1B<K1BBD(

B1

6 E=PERIMENTO: MEDIES E COLETA DE DADOS


2este ap.tu!o serL apresentado o sistema Meb de omIr io e!etrAni o Eue serL o obFeto de estudo' bem omo sero apresentados os asos de uso e a metodo!ogia do e,perimento onde se ana!isarL o impa to sobre o desempen;o e a es a!abi!idade Euando ap!i adas as seguintes tLti as arEuiteturais na sua onstruo6 ontro!e de on orr-n ia no a esso ao ban o de dados6 CiD pessimista e CiiD otimistaR geren iamento das atua!izaNes do cac#e de entidades do ban o6 CiD in/a!idao e CiiD rep!i ao Catua!izaoDR Essas tLti as foram es o!;idas porEue no e,istem na !iteratura re/isada traba!;os om enfoEue prLti o Eue faam a/a!iao de desempen;o desses aspe tos( Bem omo' essas tLti as tratam de a!guns prob!emas omuns de ap!i aNes orporati/as6 e!e/ado nWmero de usuLrios on orrentes e a esso intensi/o ao ban o( Para ana!isar esses aspe tos foi desen/o!/ido um sistema Meb CreEuisiNesQsegundo e ^BQsegundoD( %essa!taKse Eue esses e,perimentos /isam obter a per epo do usuLrio fina! sobre o desempen;o do sistema Euando uti!izadas diferentes estratIgias na sua onstruo( Dessa forma' bus ouKse riar asos de uso Eue fossem mais fiIis e,peri-n ia de um usuLrio Euando interage om uma !oFa de omIr io e!etrAni o( omo obFeto de

estudo' onde sero rea!izadas mediNes de tempo de resposta Cmi!issegundosD e /azo

+.1 L* "$"*$ *DeN - &%Fe-& 'e e!-0'&


Como obFeto de estudo foi proFetado um sistema ;amado de !i/raria iDez' Eue I um site de omIr io e!etrAni o fi t. io Eue /ende !i/ros' uFa pLgina ini ia! estL i!ustrada na "igura 2<(

B< Figura 2). <:gi!a i!icial # livraria i7e-

-o te: E"a+orao pr?pria

Esse sistema possui uma arEuitetura !Ggi a om tr-s amadas6 CiD Meb' Eue trata da /isua!izao dos dados e da interfa e om a amada de negG iosR CiiD negG ios' a Eua! I responsL/e! pe!as regras de negG iosR e CiiiD integrao' Eue interage dados( Por outro !ado' onforme "igura 2?' a organizao f.si a do sistema em pa otes om o ban o de

apresenta apenas dois pa otes6 Meb e negG iosQintegrao( %eso!/euKse Funtar os pa otes de negG ios e integrao para fa i!itar o desen/o!/imento do sistema( 5 primeiro pa ote foi onstru.do uti!izando omponentes do frame0or" Meb J7" 2(0' ou seFa' omponentes /isuais CpLginas Meb' templates' arEui/os ss e imagensD e manage$ beans om es opo de reEuisio( JL a segunda amada uti!iza tanto a te no!ogia EJB 1(1' onde esto os omponentes stateless session beans Euanto JP& 2(0' onde e,istem as entidades( 5s manage$ beans atuam omo ontro!adores Eue re ebem os dados inseridos nas pLginas' e,e utam os mItodos dos EJBs e de idem Eua! serL a pLgina de resposta( 8uando os mItodos dos EJBs so e,e utados' e!es iro rea!izar a!gum pro essamento e' possi/e!mente' a essar o ban o de dados(

B? Figura 2+. 7iagrama e classes > livraria i7e-

-o te: E"a+orao pr?pria

+.2 EB(e"*/e+-&
"oi rea!izado e,perimento no !aboratGrio &KJ da fa u!dade iDE=' onde foi uti!izado um cluster om < nGs( 2esse e,perimento foram uti!izados J omputadores' sendo B noteboo"s 7emp #os;iba 7#$ e 1 noteboo" 7onS @aio one tados atra/Is de um sMit ; Et#ernet 10Q100 Mbps de > portas' mode!o P2K700> do fabri ante Pa ifi 2etMorT( Esses noteboo"s 7emp #os;iba 7#$ possuem o sistema opera iona! 0indoMs J e apresentam a seguinte onfigurao de #ar$0are6 CP9 $2#E+ Pentium EB200 2'11 *)=R P!a a de rede Et;ernet 10Q100R MemGria < *b DD%2R )D 7&#& 2?0 *bR

5 noteboo" @aio possui sistema opera iona! 0indoMs J e apresenta a onfigurao abai,o6 CP9 $2#E+ Core i1 M110 2'11 *)=R P!a a de rede Et;ernet 10Q100Q1000R MemGria < *b DD%2R )D 7&#& $$ 120 *b J200 %pmR

BB

5s softMares usados durante o e,perimento foram6 7er/idor de ap!i ao JBoss B(1R 7er/idor Meb &pa ;e 2(2 om plugin mod]FT para ba!an eamento de argaR 7istema geren iador de ban o de dados MS7E! ?(1(?1R & ferramenta para teste de arga e desempen;o JMetter 2(<(

Esses e!ementos de soft0are e #ar$0are esto organizados segundo a topo!ogia do diagrama de imp!antao mostrado na "igura 2B 2esse diagrama' podeKse /erifi ar a e,ist-n ia de um cluster JBoss om < nGs C01 a 0<D Eue a essam o ser/idor de ban o de dados MS78+ ;ospedado no nG 0?( &s reEuisiNes dos !ientes so distribu.das entres os nGs do cluster pe!o ba!an eador de arga Eue uti!iza o a!goritmo roun$,robin CnG 0BD( Por fim' para simu!ar os usuLrios Eue a essam o sistema sob estudo foi uti!izado o JMetter Eue gerou a arga e onso!idou o re!atGrio ontendo tempo de resposta mIdio e a /azo CnG 0JD(
Figura 26. 7iagrama e impla!ta%o # cluster com ) !?s

-o te: E"a+orao pr?pria

Bus andoKse ana!isar as tLti as FL omentadas' foram proFetados asos de uso para simu!ar o omportamento do usuLrio fina! em um enLrio prG,imo do rea! diante da tLti a a ser estudada( Em todos os testes foram uti!izados' para fins de simu!ao' 100 usuLrios a essando o sistema simu!taneamente(

BJ

Dessa forma' para in/estigar o [fina!izar ompra\'

ontro!e de

on orr-n ia foi riado o

aso de uso

onforme "igura 2J( 2esse' o usuLrio na/ega pe!o sistema' arrin;o de ompras(

primeiramente /isitando sua pLgina ini ia! Eue ontIm di/ersos !i/ros( Em seguida' deta!;a as informaNes de um !i/ro espe .fi o e in !ui este no seu Posteriormente' e!e on !ui a ompra' informando os dados de login' endereo de entrega e dados de pagamento e ainda onfirmando as informaNes digitadas( 2esse momento' o sistema /erifi a o estoEue para se ertifi ar Eue e,iste a Euantidade so!i itada do produto e ria um no/o pedido no ban o de dados( 5 enfoEue dessa in/estigao estL no momento da on !uso do pedido' onde di/ersos usuLrios on orrentes podem a essar e tentar a!terar as mesmas informaNes do estoEue do produto' podendo o asionar in onsist-n ias no estado do sistema(
Figura 2/. 7iagrama e esta os > fi!ali-ar compra# livraria i7e-

-o te: E"a+orao pr?pria

Para ana!isar o seguintes enLrios6

ontro!e de

on orr-n ia no a esso ao ban o foram definidos os

X( enLrio de mL,ima

on orr-n ia K CM&U' onde todos os usuLrios iro disputar'

simu!taneamente' pe!a ompra do mesmo !i/roR (( enLrio de mIdia on orr-n ia CMED' no Eua! ada grupo de 10 usuLrios tentaro omprar' simu!taneamente' os mesmos !i/rosR X( enLrio de m.nima on orr-n ia CM$2' no Eua! os usuLrios tentaro omprar'

simu!taneamente' !i/ros diferentesR

B>

2o enLrio CM&U e,iste a maior on orr-n ia dentre os ana!isados' pois todos os usuLrios esto omprando o mesmo !i/ro on omitantemente( EsperaKse Eue esse seFa o mais desfa/orL/e! para o ontro!e otimista porEue Euando mais de um usuLrio estL arregada' serL !anada uma modifi ando a Euantidade de um produto no estoEue e a sua /erso' ao fina! da e,e uo do mItodo finali%arPe$i$o23' difere da /erso ini ia!mente e, eo -ptimisticE ception e a transao serL abortada' tendo Eue ini iar no/amente( 7e no de orrer dessa no/a transao o orrer no/amente mesma e, eo' essa serL abortada no/amente' sendo apresentada uma mensagem de erro e so!i itado Eue o usuLrio tente fina!izar o pedido no/amente( Diferentemente' o ontro!e pessimista trata esse enLrio rea!izando um b!oEueio C!o TD na !in;a da tabe!a estoEue Euando o primeiro usuLrio tentar a!terLK!a' sendo Eue os demais usuLrios Eue deseFem a!terLK!a pre isam esperar atI a !iberao desse b!oEueio( Para mais deta!;es de imp!ementao /er o Gdigo fonte das !asses PedidoContro!!er' *eren iadorPedidosEJB e *eren iadorEstoEueEJB no &p-ndi e &( 2o enLrio CMED e,iste uma on orr-n ia moderada' onde ada grupo de 10

usuLrios do tota! estarL disputando pe!o mesmo !i/ro( & reditaKse Eue esse enLrio seFa o mais rea!( Esse' em tese' seria mais benIfi o ao ontro!e otimista' uma /ez Eue ;a/eria pou a on orr-n ia e onseEuentemente pou as transaNes seriam ree,e utadas( JL no enLrio CM$2 no e,iste on orr-n ia' uma /ez Eue ada usuLrio estL

omprando um !i/ro diferente dos demais e no e,iste a possibi!idade de mais de um usuLrio tentar modifi ar' simu!taneamente' a mesma !in;a da tabe!a estoEue( Esse enLrio I neutro para as duas estratIgias de on orr-n ia( 5s enLrios CM&U e CM$2 foram es o!;idos por serem e,tremos( Em tese' o primeiro enLrio seria o mais sa rifi ante para o ontro!e otimista' sendo assim' se e!e demonstrar bom desempen;o atI nessa situao' ento o pessimista de/erL ser preterido sempre Eue poss./e!( 2o segundo on orr-n ia( 2o Eue se refere anL!ise sobre o cac#e de entidades' foi riado o aso de uso [ onsu!tar e a!terar cac#e\' i!ustrado na "igura 2>( Para esse teste foi definido o enLrio6 usuLrios a!terando e onsu!tando a cac#e 9&C( 5nde foram usados dois grupos de usuLrios( 5 primeiro grupo onsu!ta as informaNes de todos os !i/ros C100 !i/rosD para preen ;er as cac#es de ada nG e o segundo farL a!terao em informaNes desses !i/ros( enLrio' Eue I neutro para as duas estratIgias e no possui omportamento da opo otimista Euando ine,iste on orr-n ia' podeKse /erifi ar o

BO Figura 22. 7iagrama e esta os > co!sultar e alterar cac;e e e!ti a es# livraria i7e-

-o te: E"a+orao pr?pria

2a preparao para esse teste' ada usuLrio a essa uma pLgina onde e,iste uma !ista om todos os 100 !i/ros( & partir desse instante' o cac#e de entidades desse nG serL preen ;ido om as informaNes oriundas do ban o( Em seguida' ini iaKse o teste' onde os 100 usuLrios a!teram a!guns dados de ada um desses !i/ros' pro/o ando uma in/a!idao ou rep!i ao dessa entidade no cac#e( Para mais deta!;es de imp!ementao /er o Gdigo fonte das !asses +i/roContro!!er' *eren iador+i/rosEJB' Pub!i a ao e do arEui/o UM+ persisten e(,m! no &p-ndi e B( Esse enLrio pretende simu!ar uma situao rea!' onde os !ientes de um site de

omIr io e!etrAni o esto onsu!tando informaNes de a!guns produtos a partir do a ;e de entidades e' ao mesmo tempo' fun ionLrios a!teram dados desses produtos( EsperaKse Eue a rep!i aoQatua!izao mostre o pior desempen;o' pois nessa estratIgia' para ada a!terao nos dados das entidades presentes no cac#e' a onte erL uma rep!i ao de todas as informaNes referentes a essa entidade para todos os membros do cluster e' durante essa rep!i ao' o sistema pre isa esperar atI Eue todos os membros onfirmem a rep!i ao( Por outro !ado' a in/a!idao irL en/iar uma mensagem simp!es so!i itando Eue os demais membros do cluster Eue possuem a entidade Eue foi a!terada em cac#e des artem essas informaNes' no pre isando esperar pe!a onfirmao dessas(

+.3 T$/$+;& '$ $/&!-"$


2essa 7eo dis utiremos os on eitos bLsi os para definio do taman;o da

amostra a ser ana!isada de forma Eue esta seFa representati/a( & popu!ao a ser estudada nesse traba!;o I o onFunto de reEuisiNes )##P para um site de omIr io e!etrAni o sob estudo( & /ariL/e! a!eatGria obser/ada I o tempo de resposta para di/ersas pLginas do referido site( 7egundo De/ore C200B' p(2?<K2??D' desde Eue o taman;o da amostra seFa grande' o #eorema do +imite Centra! C#+CD imp!i a Eue a

J0

mIdia popu!a iona! tem distribuio apro,imadamente norma!' Eua!Euer Eue seFa a distribuio da popu!ao( Como regra prLti a para /erifi ar se o taman;o da amostra I grande' De/ore define Eue essa afirmao anterior poderL ser uti!izada Euando o taman;o da amostra for maior Eue <0 e!ementos( De/ore C200B' p(2?>D apresenta uma fGrmu!a para a! u!ar o taman;o de uma amostra para uma proporo da popu!ao' dados um n./e! de onfiana e um erro a eitL/e!( Essa fGrmu!a estL i!ustrada na EEuao 1
Equa%o 1. F?rmula o tama!;o a amostra

-o te:4 CEV6RE9 )0069 p. ).0 :

5nde6 2 I o taman;o da amostraR z I o /a!or r.ti o da ur/a norma! padronizada para o n./e! de onfiana

deseFado' ou seFa' para O?P de onfiana uti!izaKse z e 1'OB e para OOP de onfiana de/eKse usar z e 2'?>R p I a proporo da popu!ao Eue possui a ara ter.sti a estudadaR E I 1 pR M I a amp!itude ou a margem de erro a eitL/e!R L! u!o mais onser/ador Euando no se on;e e a proporo p da

Para um

popu!ao uti!izaKse p mL,imo' ou seFa' p e ?0P( Para esse e,perimento foi definido um n./e! de onfiana de O?P e uma margem de erro a eitL/e! de ?P( Dessa forma' temKse Eue o taman;o m.nimo da amostra Euando ap!i ada a EEuao 1 I de 1?11 e!ementos( Contudo' para amp!iar ainda mais a onfiana da amostra reso!/euKse uti!izar uma amostra de 2000 e!ementos(

J1

L RESULTADOS
Esse Cap.tu!o apresenta os resu!tados das mediNes rea!izadas atra/Is do e,perimento no sistema sob estudo( 7ero apresentadas aEui as figuras Eue e,ibem as reEuisiNes re!a ionadas estratIgia ana!isada e os /a!ores totais( Para me!;or ompreenso das informaNes obtidas nas mediNes fazKse imperati/o e,p!i itar a!guns on eitos uti!izados pe!o JMetter na gerao dos seus resu!tados e apresentados no g!ossLrio> do seu manua!6 CiD mediana' I um /a!or Eue di/ide o tota! de amostras em dois grupos de mesmo taman;o' ou seFa' metade das amostras serL menor ou igua! a mediana e a outra metade serL maior ou igua!R CiiD !in;a de O0P CPer enti! de O0PD' segundo De/ore C200B' p( 2>D' per enti! I uma medida estat.sti a Eue di/ide deta!;adamente um onFunto de dados Camostra ou popu!aoD' ou seFa' o per enti! de O0P separa O0P dos /a!ores do restanteR e CiiiD t#roug#put' I a /azo do sistema em um determinado tempo' ou seFa' nWmero de reEuisiNes di/idido pe!o tempo tota! ou Euantidade de bStes pro essados di/idido pe!o tempo tota!(

6.1 C&+-"&#e 'e .&+.&""H+.*$


2essa 7eo ana!isamKse os resu!tados dos testes re!ati/os s tLti as de ontro!e de on orr-n ia otimista e pessimista( 5s grLfi os !istados nessa 7eo apresentam apenas as informaNes referentes s reEuisiNes Eue uti!izam o mItodo P57# do proto o!o )##P para a pLgina ConfirmarPedido(,;tm! e os /a!ores g!obais das demais reEuisiNes( Essas reEuisiNes en/iam as informaNes ontidas nos formu!Lrios da pLgina C !iente' endereo de entrega' arto' nWmero de par e!as e produtosD e a ionam a ao de fina!izar o pedido no ser/idor' ou seFa' I Fustamente nesse instante Eue o orrem os onf!itos gerados pe!a on orr-n ia no a esso a tabe!a estoEues do ban o( L?8?8 Ce+,"*& CMA= Para esse enLrio de mL,ima on orr-n ia o ontro!e otimista apresentou os

seguintes resu!tados' onforme "igura 2O6

>

;ttp6QQFmeter(apa ;e(orgQusermanua!Qg!ossarS(;tm!(

J2 Figura 24. @esulta o simplifica o # co!trole e co!corr&!cia otimista # 36AA

-o te: E"a+orao pr?pria

Para esse

enLrio de mL,ima

on orr-n ia o

ontro!e pessimista apresentou os

seguintes resu!tados' onforme "igura 106


Figura 35. @esulta o simplifica o # co!trole e co!corr&!cia pessimista # 36AA

-o te: E"a+orao pr?pria

L?8?4 Ce+,"*& CMED Para esse enLrio de on orr-n ia intermediLria o ontro!e otimista apresentou os seguintes resu!tados' onforme "igura 116
Figura 31. @esulta o simplifica o # co!trole e co!corr&!cia otimista # 36E7

-o te: E"a+orao pr?pria

Para esse enLrio de on orr-n ia intermediLria o ontro!e pessimista apresentou os seguintes resu!tados' onforme "igura 126
Figura 32. @esulta o simplifica o # co!trole e co!corr&!cia pessimista # 36E7

-o te: E"a+orao pr?pria

L?8?3 Ce+,"*& CMIN 5 ontro!e otimista apresentou os seguintes resu!tados para o enLrio de on orr-n ia m.nima' onforme "igura 116
Figura 33. @esulta o simplifica o # co!trole e co!corr&!cia otimista # 36$B

-o te: E"a+orao pr?pria

ontro!e pessimista apresentou os seguintes resu!tados para o

enLrio de

on orr-n ia m.nima' onforme "igura 1<6

J1 Figura 3). @esulta o simplifica o # co!trole e co!corr&!cia pessimista # 36$B

-o te: E"a+orao pr?pria

L?8?5 A+$#*!e '&! "e!0#-$'&! 2o enLrio CM&U o ontro!e otimista apresentou tempos de respostas me!;ores Eue o pessimista' onforme *rLfi o 1( 5 ontro!e otimista mostrou6 CiD mIdia 2O'0OP inferior e CiiD /a!or da !in;a de O0P sendo 2J'12P inferior ao pessimista( Por outro !ado' a /azo C^bQsD do ontro!e pessimista foi 1<'>?P maior( &pesar dessa /azo' a superioridade nos tempos de respostas do ontro!e otimista fi a e/idente em uma situao de forte on orr-n ia( 2o Eue se refere ao nWmero de pedidos rea!izados pe!os usuLrios Eue no foram on !u.dos sem no/a inter/eno do usuLrio' na a!ternati/a otimista apro,imadamente <0P dos pedidos pre isaram da inter/eno do usuLrio para refaz-K!os( 2o entanto' esse prob!ema do ontro!e otimista pode ser ontornado in !uindo no/as tentati/as para refazer o pedido de forma automLti a Euando da o orr-n ia de onf!ito de a!terao on orrente(
=r:fico 1. 3omparativo # co!trole e co!corr&!cia > 36AA > requisies <C1TD3o!firmar<e i o.x;tml
Contro!e de on orr-n ia
CenLrio de mL,ima on orr-n ia K CM&U K reEuisiNes P57#]ConfirmarPedido(,;tm! otimista pessimista

2200 2000 1>00 1B00

#empo de resposta CmsD

1<00 1200 1000 >00 B00 <00 200 0

mIdia

!in;a de O0P

-o te: E"a+orao pr?pria

JL no outro

enLrio' CM$2' as duas a!ternati/as e,ibiram /a!ores seme!;antes'

onforme *rLfi o 2( 5s /a!ores obtidos pe!o pessimista foram6 CiD /a!or da !in;a de O0P foi

J<

1'>OP menor Eue o obtido pe!o otimista e CiiD /azo CreEuisiNesQsD 2?P maior e a /azo C^bQsD 2<'1>P maior Eue a a!ternati/a otimista( 5 /a!or da mIdia do pessimista foi 0'JP maior(
=r:fico 2. 3omparativo # co!trole e co!corr&!cia > 36$B > requisies <C1TD3o!firmar<e i o.x;tml
Contro!e de on orr-n ia
CenLrio de on orr-n ia m.nima K CM$2 K reEuisiNes P57#]ConfirmarPedido(,;tm! otimista
1100 1200 1100 1000 O00 >00 J00 B00 ?00 <00 100 200 100 0

pessimista

#empo de resposta CmsD

mIdia

!in;a de O0P

-o te: E"a+orao pr?pria

5 enLrio CMED demonstrou mesma tend-n ia do enLrio anterior' onforme *rLfi o 1( 2esse enLrio' os /a!ores obtidos pe!o pessimista foram6 CiD media 1'0JP inferiorR e CiiD /a!or da !in;a de O0P foi 1'>1P menorR CiiiD /azo CreEuisiNesQsD 12'>2P maior e a /azo C^bQsD 11'1?P maior Eue a a!ternati/a otimista( 2o Eue se refere ao nWmero de pedidos rea!izados pe!os usuLrios Eue no foram on !u.dos de forma automLti a em funo do onf!ito de a!terao on orrente' essa Euantidade foi menor nesse enLrio' apro,imadamente' BP dos pedidos pre isaram de no/a inter/eno do usuLrio para refaz-K !os no aso do ontro!e otimista( &pesar das mIdias e !in;as de O0P dos dois tipos de ontro!es apresentarem /a!ores apro,imados' os des/iosKpadro mostraram Eue os tempos de resposta da a!ternati/a pessimista /ariaram mais Eue aEue!es do otimista( 5 des/ioK padro do pessimista foi <JB'O< ms' o Eue representa ?JP da sua mIdia( EnEuanto o des/ioKpadro do otimista foi 1>>'>2 ms' o Eue eEui/a!e a <B P da sua mIdia(

J? =r:fico 3. 3omparativo # co!trole e co!corr&!cia > 36E7 > requisies <C1TD3o!firmar<e i o.x;tml
Contro!e de on orr-n ia
CenLrio de on orr-n ia mediano K CMED K reEuisiNes P57#]ConfirmarPedido(,;tm! otimista
1200 1100 1000

pessimista

#empo de resposta CmsD

O00 >00 J00 B00 ?00 <00 100 200 100 0

mIdia

!in;a de O0P

-o te: E"a+orao pr?pria

6.2 C$.;e 'e e+-*'$'e!


2essa 7eo obser/amKse os resu!tados dos testes re!ati/os s tLti as de geren iamento de atua!izao da cac#e de entidades6 CiD in/a!idao e CiiD rep!i aoCatua!izaoD( 5s grLfi os !istados nessa 7eo apresentam apenas as informaNes referentes s reEuisiNes Eue uti!izam o mItodo P57# do proto o!o )##P para a pLgina a!terar+i/ro(,;tm! e os /a!ores g!obais das demais reEuisiNes( Essas reEuisiNes a!teram a!guns dados de !i/ros Eue FL esto em cac#e' impondo assim' uma in/a!idao ou rep!i ao desses dados( L?4?8 Ce+,"*& UAC Para o "igura 1?(
Figura 3+. @esulta o os testes i!vali acao o cac;e

enLrio 9&C4 a in/a!idao apresentou os seguintes resu!tados'

onforme

-o te: E"a+orao pr?pria

Para o "igura 1B(

enLrio 9&C4 a rep!i ao apresentou os seguintes resu!tados'

onforme

JB Figura 36. @esulta o os testes replicacao o cac;e

-o te: E"a+orao pr?pria

L?4?4 A+,#*!e '&! "e!0#-$'&! & a!ternati/a de in/a!idao demonstrou tempo de resposta mIdio 1'<2 P menor e !in;a de O0P om /a!or 1J'<?P menor' onforme *rLfi o <( 5utrossim' o des/ioKpadro da in/a!idao foi >JJ'J1 ms' representando B0P da sua mIdia( JL o des/ioKpadro da rep!i ao foi OO1'?O ms' o Eue eEui/a!e a BJP da sua mIdia( 5 Eue demonstra maior /ariao dos tempos da rep!i ao(
=r:fico ). 3omparativo # cac;e e e!ti a es # EA3
Ca ;e de entidades K
reEuisiNes P57#]&!terar+i/ro(,;tm! in/a!idao
1000 2J00 2<00 #empo de resposta CmsD 2100 1>00 1?00 1200 O00 B00 100 0

rep!i ao

mIdia

!in;a de O0P

-o te: E"a+orao pr?pria

& /azo C^bQsegundoD da in/a!idao foi ?0'O<P superior a rep!i aoQatua!izao' onforme *rLfi o ?(

JJ =r:fico +. 3omparativo a va-%o e!tre i!vali a%o e replica%o


Ca ;e de entidades K @azo C^bQsD
reEuisiNes para P57#]&!terar+i/ro(,;tm! in/a!idao
2< 21 @azo C^bQsegundoD 1> 1? 12 O B 1 0

rep!i ao

-o te: E"a+orao pr?pria

J>

CONCLUSO
Considerando o grande ris o Eue di/ersas eEuipes de desen/o!/imento de sistemas Meb esto e,postas Euando ompNem seus sistemas baseados' prin ipa!mente' em suas intuiNes e e,peri-n ias anteriores' o presente traba!;o pro urou ana!isar o impa to da ap!i ao das tLti as arEuiteturais de cac#e de entidades do ban o e foram re/isados os prin ipais ontro!e de on orr-n ia no desempen;o e na es a!abi!idade de sistemas orporati/os Meb( Para isso' on eitos !igados a p!ataforma Ja/a EE B' a anL!ise de desempen;o e arEuitetura de softMare' bem omo foi rea!izada uma e,tensa pesEuisa sobre as prin ipais tLti as arEuiteturais i!ustradas na !iteratura Eue podem me!;orar o desempen;o de sistema Meb( &!Im do mais' foram rea!izadas mediNes de desempen;o' onde foram mensurados os tempos de resposta e a /azo C t#roug#putD do sistema de eK ommer e produzido omo obFeto de estudo para ada tLti a sob in/estigao( 5s resu!tados das referidas mediNes e/iden iaram a!gumas informaNes importantes( 2o Eue se refere ao ontro!e de on orr-n ia' esse estudo di/u!ga a!gumas

informaNes Eue no e,istem na !iteratura re/isada( ConstatouKse Eue o ontro!e otimista apresentou desempen;o superior ao pessimista em um enLrio de forte on orr-n ia Eue de/eria se mostrar bem mais ad/erso para o otimista( Este apresentou !in;a de O0P e mIdia om /a!ores' respe ti/amente' 2J'12P e 2O'0OP inferiores aos /a!ores do ontro!e pessimista( 2o entanto' o ontro!e otimista sob forte on orr-n ia pre isou da inter/eno do ar-n ia do ontro!e otimista pode ser

usuLrio para refazer <0P dos pedidos( Essa

ontornada modifi andoKse a imp!ementao desse ontro!e( 7endo assim' re omendaKse dar prefer-n ia para o ontro!e otimista em ap!i aNes Eue possuem forte on orr-n ia( JL para ap!i aNes de on orr-n ia moderada a peEuena podeKse usar tambIm o loc" pessimista' atentandoKse para uti!izar o loc" o mais prG,imo poss./e! do momento da a!terao na entidade( &!Im do mais' no aso do ontro!e otimista' para ada no/o proFeto se faz ne essLrio ana!isar se os usuLrios esto dispostos a ar ar transaNes em per.odos de forte on orr-n ia( Em se tratando de cac#e de entidades do ban o' esse traba!;o tambIm informa a!gumas informaNes no/as( Confirmando a e,pe tati/a' /erifi ouKse Eue a tI ni a de in/a!idao de cac#e e,ibiu desempen;o bem superior a tI ni a de rep!i ao ou atua!izao( 5s resu!tados da opo de in/a!idao apresentaram tempo de resposta mIdio om esse Anus de refazer a!gumas

JO

1'<2 P menor e !in;a de O0P om /a!or 1J'<?P menor Eue a rep!i ao e /azo ?0'O<P maior( Diante desse resu!tado do cac#e' re omendaKse uti!izar sempre Eue poss./e! a a!ternati/a de in/a!idao( & partir desse estudo' podem surgir omo possibi!idades de no/as !in;as de pesEuisa e traba!;os futuros6

$n/estigar e rea!izar esses mesmos testes na /erso ? do JBoss Eue uti!iza o JBoss Ca ;e e omparar om os resu!tados aEui obtidosR

Estudar os deta!;es do ser/io de cluster e rea!izar esses mesmos testes no ser/idor *!assfis;R

&na!isar tambIm a estratIgia de geren iamento de sesso' uti!izando' in !usi/e' o stateful session beans em ambiente de clusterR

PesEuisar sobre os impa tos na uti!izao da rede no Eue se refere s estratIgias de rep!i ao da sesso e rep!i aoQin/a!idao do cac#e de entidadesR

$n/estigar o impa to nos tempos de resposta das diferentes tLti as Euando uti!izados diferentes taman;os de cluster(

>0

REFERTNCIAS
B&C)M&22' "(R B&77' +(R ^+E$2' M( I##0/*+$-*+@ -;e F0+'$/e+-$# C&+-"*%0-&"! -& S&)-D$"e A".;*-e.-0"e Q0$#*-2( 1 ed( Pittsburg;6 Carnegie Me!!on 9ni/ersitS' 2002( B2p( B&77' +(R C+EME2#7' P(R ^&=M&2' %( S&)-D$"e A".;*-e.-0"e *+ P"$.-*.e( 2( Ed( &ddison 0es!eS' 2001( ?B0p( C&DE' M(R 7)E$+' )( S0+ Ce"-*)*e' E+-e"("*!e A".;*-e.- )&" J$ $ EE !-0'2 @0*'e( 2( Ed( Boston6 Pearson Edu ation' 2010( 1O1p( DE&2' J(R *)EM&0&#' 7( M$(Re'0.e: S*/(#*)*e' D$-$ P"&.e!!*+@ &+ L$"@e C#0!-e"!( 2011( 11p DE@5%E' J( +( P"&%$%*#*'$'e e E!-$-O!-*.$: ($"$ e+@e+;$"*$ e .*H+.*$! ( B ed( 7o Pau!o6 #;ompson +earning' 200B( BO2p( E+M&7%$' %(R 2&@&#)E' 7( S*!-e/$! 'e %$+.&! 'e '$'&!( <( Ed( 7o Pau!o6 Pearson &ddison 0es!eS' 200?( J2<p( "E%%&%5' 2011( *523&+@E7' &( Be@*++*+@ J$ $U EE L P#$-)&"/ D*-; G#$!!F*!; 3 6 2( ed( 2eM _orT6 &press' 2010( ?0>p( )&$2E7' 7( P"& J$ $ EE 6 Pe")&"/$+.e M$+$@e/e+- $+' O(-*/*N$-*&+(1( Ed( 2eM _orT6 &press' 200B( <20p( )&+$+$' E( )( A($.;e JMe-e"( 1( Ed( Mumbai6 Pa Tt Pub!is;ing' 200>( 11>p( ^E$#)' MR 7C)$2C&%$5+' M( P"& JPA 4( 2eM _orT6 &press' 200O( ?01p( P( C#0!-e"*+@ C;$+@e! *+ ASL( 2010( Dispon./e! em6 7an "ran is o6 *oog!e' 200<( Dispon./e! em6 c;ttp6QQresear ;(goog!e( omQar ;i/eQmapredu eKosdi0<(pdfd( & esso em6 0> de setembro de

c;ttp6QQ ommunitS(Fboss(orgQMiTiQC!usteringC;anges$n&7Bd( & esso em6 0J de dezembro de

>1

^592E@'

7(

Pe")&"/$+.e

E+@*+ee"*+@

&)

D*!-"*%0-e'

C&/(&+e+--B$!e'

S2!-e/!6 Ben ;marTing' Mode!ing and Performan e Predi tion( 200?( 20>p( Dissertao CDoutorado D K @om "a ;berei ; $nformatiT K #e ;nis ;en 9ni/ersitfat Darmstad' Darmstadt( ^592E@' 7(R 0E$7' B(R B9C)M&22' &( Pe")&"/$+.e T0+*+@ $+' O(-*/*N$-*&+ &) J4EE A((#*.$-*&+! &+ -;e J%&!! P#$-)&"/ ( Journa! of Computer %esour e Management' de ( 200<( @o!( 111( p( <0K<O( M&%C)$52$' "( JB&!! AS 6 Pe")&"/$+.e T0+*+@( Mumbai6 Pa Tt Pub!is;ing' 2010( 2O1p( ME2&7Cb' D( &(R &+ME$D&' @( &( "(R D50D_' +( 0( Pe")&"/$+.e %2 De!*@+: C&/(0-e" C$($.*-2 P#$++*+@( 1( Ed( 2eM JerseS6 Prenti e )a!!' 200<( <>0p( 2$C(B%( TIC D&/*.O#*&! 4<<K 'e!-$.$ ."e!.*/e+-& '& $.e!!& V I+-e"+e- +&! #$"e! %"$!*#e*"&!( Dispon./e! em6 c;ttp6QQMMM(ni (brQimprensaQre!easesQ2010Qr!K2010K0B(;tmd( & esso em 20 de setembro de 2010( 5%&C+E( T;e J$ $ EE L T0-&"*$#( %edMood CitS6 5ra !e' 2011a( Dispon./e! em6 c ;ttp6QQdoMn!oad(ora !e( omQFa/aeeQBQtutoria!Qdo QFa/aeetutoria!B(pdfd( & esso em6 0J de setembro de 2011( O0Bp( ]]]]]]( W&0" F*"!- C0(: A+ I+-"&'0.-*&+ -& -;e J$ $TM EE P#$-)&"/( %edMood CitS6 de 2011( ?2p( P5%#&+ %J( Ve+'$! (e#$ *+-e"+e- ."e!.e/ 87<X e/ '&*! $+&!( Dispon./e! em6 c;ttp6QQnoti ias(rJ( omQe onomiaQnoti iasQ/endasKpe!aKinternetK res eramK1J0KnoKbrasi!KemK 200OK20100>11(;tm!d( & esso em 20 de setembro de 2010( P%E77M&2' %( 7( E+@e+;$"*$ 'e S&)-D$"e( B ed( %io de Janeiro6 M *raMK)i!!' 200B( J?2p( %9B$2*E%' &( +(R B9%^E' B( E+-e"("*!e J$ $Be$+! 3?8? B( ed( 7ebastopo!6 5g%ei!!S' 2010( J1>p( 5ra !e' 2011b( Dispon./e! em6 c;ttp6QQdoMn!oad(ora !e( omQFa/aeeQBQfirst upQdo Qfirst up(pdfd( & esso em6 0J de setembro

>2

7)&0' M(R *&%+&2' D( S&)-D$"e A".;*-e.-0"e: Pe!(e.-* e! &+ $+ e/e"@*+@ '*!.*(#*+e( 1 ed( 2eM JerseS6 Prenti e )a!!' 1OOB( 2<2p( 759=&' 5( %( P"&.e!!&! 'e $(&*& $& 'e!e+ &# */e+-& 'e $(#*.$ARe! De% ( 200?( 121p( Dissertao CMestrado em i-n ias de omputao e matemLti a omputa iona!D $nstituto de Ci-n ias MatemLti as e de Computao K 97P' 7o Car!os( 792 M$C%57_7#EM7( J$ $U P#$-)&"/: E+-e"("*!e E'*-*&+ 1J$ $ EE9

S(e.*)*.$-*&+:

L:? JSR-<<<38L J$ $1-/9 P#$-)&"/: E+-e"("*!e E'*-*&+ 1J$ $ EE9

S(e.*)*.$-*&+( 7anta C!ara6 7un' 200Oa( 2<Jp( ]]]]]]( J$ $Se" e"U F$.e! S(e.*)*.$-*&+ F$.e! S(e.*)*.$-*&+( 7anta C!ara6 7un' 200Ob( <?>p( ]]]]]]( JSR 387: J$ $TM Pe"!*!-e+.e API 4?<( 7anta C!ara6 7un' 200O ( <>Bp( 0&2*' _( U+'e" -;e H&&' &) J4EE C#0!-e"*+@( #;e 7er/er 7ide( 200?( Dispon./e! em6 c;ttp6QQMMM(t;eser/erside( omQneMsQ11B<<10Q9nderKt;eK)oodKofKJ2EEKC!usteringd( & esso em6 0O de &gosto de 2011( ]]]]]](S.$#*+@ W&0" J$ $ EE A((#*.$-*&+! P P$"- 8( #;e 7er/er 7ide( 200>a( Dispon./e! em6 c;ttp6QQMMM(t;eser/erside( omQneMsQ11B1B>1Q7 a!ingK_ourKJa/aKEEK &pp!i ationsd( & esso em6 0O de &gosto de 2011( ]]]]]](S.$#*+@ W&0" J$ $ EE A((#*.$-*&+! P P$"- 4( #;e 7er/er 7ide( 200>b( Dispon./e! em6 c;ttp6QQMMM(t;eser/erside( omQneMsQ11B1BJOQ7 a!ingK_ourKJa/aKEEK &pp!i ationsKPartK2d( & esso em6 0O de &gosto de 2011( 4?<: JSR-<<<385 J$ $Se" e"1-/9

>1

APTNDICE A - CQ'*@& )&+-e ($"$ & .&+-"&#e 'e .&+.&""H+.*$


C!asse Managed Bean PedidoContro!!er
pac"age br1com1i$e%boo"store1.sf1beans>

import .ava1io1Seriali%able> import .ava1mat#1Big&ecimal> import .ava1util1ArrayList> import .ava1util1List> import .ava 1annotation1PostConstruct> import .ava 1e.b1EJB> import .ava 1enterprise1conte t1Conversation> import .ava 1enterprise1conte t1ConversationScope$> import .ava 1faces1application1(aces!essage> import .ava 1faces1bean1!anage$Bean> import .ava 1faces1bean1!anage$Property> import .ava 1faces1bean1)e*uestScope$> import .ava 1faces1component1#tml1Html&ataTable> import .ava 1faces1conte t1(acesConte t> import .ava 1faces1conte t1(las#> import .ava 1faces1event1ComponentSystemEvent> import .ava 1in.ect1In.ect> import .ava 1in.ect1'ame$> import .ava 1persistence1-ptimisticLoc"E ception>

import br1com1i$e%boo"store1aplicacao1Sessao> import br1com1i$e%boo"store1e.bs1@erencia$orPe$i$os> import br1com1i$e%boo"store1e ceptions1ItensPe$i$os'aoSalvosE ception> import br1com1i$e%boo"store1e ceptions1!o$ificacaoConcorrenteE ception> import br1com1i$e%boo"store1e ceptions1Pe$i$o'aoSalvoE ception> import br1com1i$e%boo"store1mo$el1Cliente> import br1com1i$e%boo"store1mo$el1En$erecoEntrega> import br1com1i$e%boo"store1mo$el1ItensPe$i$o> import br1com1i$e%boo"store1mo$el1Pe$i$o> import br1com1i$e%boo"store1mo$el1Publicacao> import br1com1i$e%boo"store1mo$el16suario> import br1com1i$e%boo"store1mo$el1e ceptions1Esto*ue'egativoE ception>

5!anage$Bean2name7Ape$i$oControllerA4eager7true3 5)e*uestScope$ public class Pe$i$oController implements Seriali%able B

><
11111111111111private static final long serial+ersion6I& 7 ;L>

111111111111115!anage$Property2value7ACBcarrin#oControllerDA3 11111111111111private Carrin#oController carrin#o> 11111111111111private Pe$i$o pe$i$o>

111111111111115EJB 11111111111111private @erencia$orPe$i$os gerencia$orEJB>

11111111111111public String finali%arPe$i$o23 11111111111111B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 pe$i$o 7 gerencia$orEJB1finali%arPe$i$o2cliente4entrega4itens4cartaoCre$ito4numParc3> Cliente cliente 7 getCarrin#o231getCliente23> En$erecoEntrega entrega 7 getCarrin#o231getEn$ereco23> ListEItensPe$i$oF itens 7 ne0 ArrayListEItensPe$i$oF2getCarrin#o231getPro$utos233> long cartaoCre$ito 7 getCarrin#o231getCartaoCre$ito23> int numParc 7 getCarrin#o231get'umParcelas23> Pe$i$o pe$i$o 7 null> try B

11111111111111 11111111111111

D catc# 2ItensPe$i$os'aoSalvosE ception e3 B (acesConte t1getCurrentInstance231a$$!essage2null4

11111111111111 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 AAlgum item $o pe$i$o n:o po$e ser salvo1A4 AAlgum item $o pe$i$o n:o po$e ser salvo1A33> 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 D catc# 2Pe$i$o'aoSalvoE ception e3 B (acesConte t1getCurrentInstance231a$$!essage2null4 get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

11111111111111 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 A- Pe$i$o n:o po$e ser salvo1A4 A- Pe$i$o n:o po$e ser salvo1A33> 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 Dcatc# 2Esto*ue'egativoE ception e3 B (acesConte t1getCurrentInstance231a$$!essage2null4 get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

11111111111111 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 A':o #K *uanti$a$e suficiente em esto*ue1A4A':o #K *uanti$a$e suficiente em esto*ue1A33> 11111111111111 11111111111111 11111111111111 11111111111111 D catc# 2!o$ificacaoConcorrenteE ception e3 B get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

>?
11111111111111 try B

11111111111111 pe$i$o 7 gerencia$orEJB1finali%arPe$i$o2cliente4entrega4itens4cartaoCre$ito4numParc3> 11111111111111 11111111111111 D catc# 2!o$ificacaoConcorrenteE ception e;3 B (acesConte t1getCurrentInstance231a$$!essage2null4

11111111111111 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 A6ma mo$ificaL:o concorrente foi efetua$a1 (avor refaLa1A4A6ma mo$ificaL:o concorrente foi efetua$a1A33> 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 D catc# 2E ception e=3 B (acesConte t1getCurrentInstance231a$$!essage2null4 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

11111111111111 e=1get!essage234 e=1get!essage2333> 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 D D catc# 2E ception e3 B

e=1printStac"Trace23> get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

(acesConte t1getCurrentInstance231a$$!essage2null4 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4

11111111111111 e1get!essage234 e1get!essage2333> 11111111111111 11111111111111 11111111111111 11111111111111 D

e1printStac"Trace23> get(las#231setIeep!essages2true3> return AConfirmarPe$i$oJfaces,re$irect7trueA>

11111111111111 11111111111111 11111111111111 11111111111111D D

getCarrin#o231setPe$i$o)eali%a$o2pe$i$o3> carrin#o1limparCarrin#o23> return APe$i$o)eali%a$oJfaces,re$irect7trueA>

C!asse EJB *eren iadorPedidosEJB


pac"age br1com1i$e%boo"store1e.bs>

import .ava1mat#1Big&ecimal> import .ava1util1Collection> import .ava1util1&ate> import .ava1util1Has#Set> import .ava1util1List> import .ava1util1Set>

>B
import .ava 1e.b1EJB> import .ava 1e.b1Local> import .ava 1e.b1Stateless> import .ava 1e.b1TransactionAttribute> import .ava 1e.b1TransactionAttributeType> import .ava 1e.b1Transaction!anagement> import .ava 1persistence1Entity!anager> import .ava 1persistence1PersistenceConte t> import .ava 1persistence1Query>

import br1com1i$e%boo"store1e ceptions1ItensPe$i$os'aoSalvosE ception> import br1com1i$e%boo"store1e ceptions1!o$ificacaoConcorrenteE ception> import br1com1i$e%boo"store1e ceptions1Pe$i$o'aoSalvoE ception> import br1com1i$e%boo"store1mo$el1Cliente> import br1com1i$e%boo"store1mo$el1En$erecoEntrega> import br1com1i$e%boo"store1mo$el1ItensPe$i$o> import br1com1i$e%boo"store1mo$el1Pe$i$o> import br1com1i$e%boo"store1mo$el1Pro$uto> import br1com1i$e%boo"store1mo$el1e ceptions1Esto*ue'egativoE ception>

5Stateless 5Local2@erencia$orPe$i$os1class3 5TransactionAttribute2TransactionAttributeType1'-THS6PP-)TE&3 public class @erencia$orPe$i$osEJB implements @erencia$orPe$i$os B

11111111111111private static final Big&ecimal +AL-)H()ETEHP-)HLI+)- 7 ne0 Big&ecimal2M1?3> 111111111111115PersistenceConte t2unit'ame7APro.etoI$e%EJBA3 11111111111111private Entity!anager em> 11111111111111 111111111111115EJB 11111111111111private @erencia$orEsto*ue controleEsto*ue> 11111111111111 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111public Pe$i$o finali%arPe$i$o2Cliente cliente4 En$erecoEntrega en$ereco4 ListEItensPe$i$oF listItens4long cartao4 int numParc3 11111111111111 t#ro0s ItensPe$i$os'aoSalvosE ception4 Pe$i$o'aoSalvoE ception4 Esto*ue'egativoE ception4 !o$ificacaoConcorrenteE ception B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 pe$i$o1setLogra$ouroEntrega2en$ereco1getLogra$ouro233> cliente 7 em1merge2cliente3> pe$i$o1setCliente2cliente3> Pe$i$o pe$i$o 7 ne0 Pe$i$o23>

>J
11111111111111 11111111111111 11111111111111 11111111111111 1111111111 11111111111111 1111111111111 1111111111 11111111111111 1111111111 11111111111111 1111111111 11111111111111 11111111111111 Integer numero'ota(iscal 7 gera'umero'ota(iscal23> pe$i$o1set'umero'ota(iscal2numero'ota(iscal3> SetEItensPe$i$oF setItens 7 ne0 Has#SetEItensPe$i$oF2listItens3> &ate $ataAtual 7 ne0 &ate2System1currentTime!illis233> pe$i$o1set&ataPe$i$o2$ataAtual3> pe$i$o1setBairroEntrega2en$ereco1getBairro233> pe$i$o1setCi$a$eEntrega2en$ereco1getCi$a$eEntrega233> pe$i$o1setEsta$oEntrega2en$ereco1getEsta$o233> pe$i$o1setCepEntrega2en$ereco1getCep233> pe$i$o1setItensPe$i$oSet2null3> pe$i$o1setCartaoCre$ito2cartao3> pe$i$o1set'umParcelas2numParc3>

1111111111 11111111111111 1111111111

Big&ecimal valor(rete 7 calcula+alor(rete2listItens4 en$ereco3> pe$i$o1set+alor(rete2valor(rete3>

NNretira as *uanti$a$es compra$as $os itens $o esto*ue 1111111 retiraItens&oEsto*ue2setItens3>

1111111111NNSalva $a$os $o pe$i$o na tabela pe$i$o 11111111111111 1111111111 NNsalva $a$os $os itens $o pe$i$o em ItensPe$i$o 11111111111111 1111111111 11111111111111 11111111111111D 11111111111111 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111private voi$ retiraItens&oEsto*ue2SetEItensPe$i$oF setItens3 t#ro0s Esto*ue'egativoE ception4 !o$ificacaoConcorrenteE ception B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111D D for 2ItensPe$i$o itemPe$i$o 8 setItens3 B controleEsto*ue1retiraQuanti$a$eEmEsto*ue2 itemPe$i$o1getPro$uto;231getCo$Pro$uto234 itemPe$i$o1getQuanti$a$e233> return pe$i$o> salvarItensPe$i$o2pe$i$o4setItens3> salvarPe$i$o2pe$i$o3>

11111111111111private int getQuanti$a$ePro$utos2CollectionEItensPe$i$oF listItens3 B 11111111111111 11111111111111 11111111111111 for 2ItensPe$i$o itensPe$i$o 8 listItens3 B int *uanti$a$e 7 O>

>>
11111111111111 11111111111111 11111111111111 11111111111111 11111111111111D return *uanti$a$e> D *uanti$a$e P7 itensPe$i$o1getQuanti$a$e23>

11111111111111private Integer gera'umero'ota(iscal23 B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 return ma 'um'ota(iscal> D ma 'um'ota(iscalPP> D if 2num!a '(Q7null3 B ma 'um'ota(iscal 7 num!a '(> Query *uery 7 em1create'ame$Query2APe$i$o1fin$!a 'umero'ota(iscalA3> Integer num!a '( 72Integer3*uery1getSingle)esult23> Integer ma 'um'ota(iscal 7 O>

public Big&ecimal calcula+alor(rete2CollectionEItensPe$i$oF listItens4En$erecoEntrega entrega3B 1111111111Big&ecimal valor(rete 7 ne0 Big&ecimal2O1OO3>NN(rete gratis 1111111111valor(rete 7 +AL-)H()ETEHP-)HLI+)-> 1111111111valor(rete 7 valor(rete1multiply2ne0 Big&ecimal2getQuanti$a$ePro$utos2listItens333> 1111111111 1111111111return valor(rete> D

111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111private voi$ salvarItensPe$i$o2Pe$i$o pe$i$o4SetEItensPe$i$oF itens3 t#ro0s ItensPe$i$os'aoSalvosE ception B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 D em1persist2item3> for 2ItensPe$i$o item 8 itens3 B item1setPe$i$o;2pe$i$o3> item1getItensPe$i$oPI231setPe$i$o2pe$i$o1getCo$Pe$i$o233> try B

11111111111111 11111111111111 D catc# 2E ception e3 B

>O
11111111111111 t#ro0 ne0 ItensPe$i$os'aoSalvosE ception2A'ao foi possivel salvar os itens $o pe$i$o APpe$i$o1getCo$Pe$i$o233> 11111111111111 11111111111111D 11111111111111 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111private voi$ salvarPe$i$o2Pe$i$o pe$i$o3 t#ro0s Pe$i$o'aoSalvoE ception B 11111111111111 11111111111111 11111111111111 try B em1persist2pe$i$o3> D catc# 2E ception e3 B D

11111111111111 t#ro0 ne0 Pe$i$o'aoSalvoE ception2A'ao foi possivel salvar o pe$i$o APpe$i$o1getCo$Pe$i$o233> 11111111111111 11111111111111D D D

C!asse EJB *eren iadorEstoEueEJB opo otimista


pac"age br1com1i$e%boo"store1e.bs>

import .ava1mat#1Big&ecimal> import .ava1util1Collection> import .ava1util1&ate> import .ava1util1Has#Set> import .ava1util1List> import .ava1util1Set>

import .ava 1annotation1security1PermitAll> import .ava 1annotation1security1)olesAllo0e$> import .ava 1e.b1Local> import .ava 1e.b1Stateless> import .ava 1e.b1TransactionAttribute> import .ava 1e.b1TransactionAttributeType> import .ava 1persistence1Entity!anager> import .ava 1persistence1Loc"!o$eType> import .ava 1persistence1-ptimisticLoc"E ception> import .ava 1persistence1PersistenceConte t> import .ava 1persistence1Query>

import br1com1i$e%boo"store1e ceptions1!o$ificacaoConcorrenteE ception> import br1com1i$e%boo"store1mo$el1Cliente> import br1com1i$e%boo"store1mo$el1En$erecoEntrega> import br1com1i$e%boo"store1mo$el1Esto*ue> import br1com1i$e%boo"store1mo$el1ItensPe$i$o> import br1com1i$e%boo"store1mo$el1Pe$i$o>

O0
import br1com1i$e%boo"store1mo$el1e ceptions1Esto*ue'egativoE ception>

5Stateless 5Local2@erencia$orEsto*ue1class3 5TransactionAttribute2TransactionAttributeType1'-THS6PP-)TE&3 public class @erencia$orEsto*ueEJB implements @erencia$orEsto*ue B 111111111111115PersistenceConte t2unit'ame7APro.etoI$e%EJBA3 11111111111111private Entity!anager em> 11111111111111 111111111111115-verri$e 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111public voi$ retiraQuanti$a$eEmEsto*ue2int co$Pro$uto4 int *uanti$a$e)etira$a3 t#ro0s Esto*ue'egativoE ception4 !o$ificacaoConcorrenteE ceptionB 11111111111111 11111111111111 11111111111111 Query * 7 em1create'ame$Query2AEsto*ue1fin$ByPro$utoA3> *1setParameter2Aco$Pro$utoA4 co$Pro$uto3> Esto*ue esto*ue 7 2Esto*ue3*1getSingle)esult23>

11111111111111 11111111111111 11111111111111 11111111111111D 11111111111111

esto*ue1retiraEsto*ue2*uanti$a$e)etira$a3>

aplica!u$ancas23>

11111111111111protecte$ voi$ aplica!u$ancas23 t#ro0s !o$ificacaoConcorrenteE ceptionB 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111D D D try B em1flus#23> Dcatc# 2-ptimisticLoc"E ception e3 B t#ro0 ne0 !o$ificacaoConcorrenteE ception2e1get!essage233>

C!asse EJB *eren iadorEstoEueEJB opo pessimista


pac"age br1com1i$e%boo"store1e.bs>

import .ava1mat#1Big&ecimal> import .ava1util1Collection> import .ava1util1&ate> import .ava1util1Has#!ap> import .ava1util1Has#Set> import .ava1util1List> import .ava1util1!ap> import .ava1util1Set>

O1

import .ava 1e.b1EJBTransaction)olle$bac"E ception> import .ava 1e.b1Local> import .ava 1e.b1Stateless> import .ava 1e.b1TransactionAttribute> import .ava 1e.b1TransactionAttributeType> import .ava 1persistence1Entity!anager> import .ava 1persistence1Loc"!o$eType> import .ava 1persistence1Loc"TimeoutE ception> import .ava 1persistence1-ptimisticLoc"E ception> import .ava 1persistence1PersistenceConte t> import .ava 1persistence1PessimisticLoc"E ception> import .ava 1persistence1Query>

import org1#ibernate1e ception1@enericJ&BCE ception>

import br1com1i$e%boo"store1e ceptions1!o$ificacaoConcorrenteE ception> import br1com1i$e%boo"store1mo$el1Cliente> import br1com1i$e%boo"store1mo$el1En$erecoEntrega> import br1com1i$e%boo"store1mo$el1Esto*ue> import br1com1i$e%boo"store1mo$el1ItensPe$i$o> import br1com1i$e%boo"store1mo$el1Pe$i$o> import br1com1i$e%boo"store1mo$el1e ceptions1Esto*ue'egativoE ception>

5Stateless 5Local2@erencia$orEsto*ue1class3 5TransactionAttribute2TransactionAttributeType1'-THS6PP-)TE&3 public class @erencia$orEsto*ueEJB implements @erencia$orEsto*ue B 111111111111115PersistenceConte t2unit'ame7APro.etoI$e%EJBA3 11111111111111private Entity!anager em> 11111111111111 111111111111115-verri$e 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111public voi$ retiraQuanti$a$eEmEsto*ue2int co$Pro$uto4 int *uanti$a$e)etira$a3 t#ro0s Esto*ue'egativoE ception4 !o$ificacaoConcorrenteE ceptionB 11111111111111 11111111111111 Query * 7 em1create'ame$Query2AEsto*ue1fin$ByPro$utoA3> *1setParameter2Aco$Pro$utoA4 co$Pro$uto3>

11111111111111 11111111111111 11111111111111 11111111111111 11111111111111

Esto*ue esto*ue 7 2Esto*ue3*1getSingle)esult23> int *uanti$a$eEsto*ue 7 esto*ue1getQuanti$a$e23> if 2*uanti$a$eEsto*ue,*uanti$a$e)etira$a F7 O3 B !apEString4-b.ectF props 7 ne0 Has#!apEString4-b.ectF23> props1put2A.ava 1persistence1loc"1timeoutA4?OOO3>

O2
11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 try B em1refres#2esto*ue4 Loc"!o$eType1PESSI!ISTICH/)ITE4props3> D catc# 2Loc"TimeoutE ception eTime-ut3 B try B em1refres#2esto*ue4 Loc"!o$eType1PESSI!ISTICH/)ITE4props3> D catc# 2Loc"TimeoutE ception e=Time-ut3 B

11111111111111 t#ro0 ne0 !o$ificacaoConcorrenteE ception2A'ao foi possivel finali%ar pe$i$o1 -correu um time out na retira$a $o esto*ue1A3> 11111111111111 11111111111111 D Dcatc#2PessimisticLoc"E ception ePessimistic3B

11111111111111 t#ro0 ne0 !o$ificacaoConcorrenteE ception2A'ao foi possivel finali%ar pe$i$o1 -correu um erro com o banco na retira$a $o esto*ue1A3> 11111111111111 Dcatc#2EJBTransaction)olle$bac"E ception eTransaction3B

11111111111111 t#ro0 ne0 !o$ificacaoConcorrenteE ception2A'ao foi possivel finali%ar pe$i$o1 -correu um erro com o banco na retira$a $o esto*ue1A3> 11111111111111 Dcatc#2@enericJ&BCE ception e@enericJ&BC3B

11111111111111 t#ro0 ne0 !o$ificacaoConcorrenteE ception2A'ao foi possivel finali%ar pe$i$o1 -correu um erro com o banco na retira$a $o esto*ue1A3> 11111111111111 Dcatc#2E ception e3B

11111111111111 t#ro0 ne0 !o$ificacaoConcorrenteE ception2A'ao foi possivel finali%ar pe$i$o1 -correu um erro com o banco na retira$a $o esto*ue1A3> 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 DelseB if 2*uanti$a$eEsto*ue,*uanti$a$e)etira$a F7 O3 B esto*ue1retiraEsto*ue2*uanti$a$e)etira$a3> if 2*uanti$a$eEsto*ueQ7esto*ue1getQuanti$a$e233 *uanti$a$eEsto*ue 7 esto*ue1getQuanti$a$e23> D

11111111111111 t#ro0 ne0 Esto*ue'egativoE ception2co$Pro$uto4*uanti$a$eEsto*ue4*uanti$a$e)etira$a3> 11111111111111 11111111111111 DelseB D

11111111111111 t#ro0 ne0 Esto*ue'egativoE ception2co$Pro$uto4*uanti$a$eEsto*ue4*uanti$a$e)etira$a3> 11111111111111 11111111111111D D D

O1

APTNDICE B - CQ'*@& )&+-e ($"$ & .$.;e


C!asse Managed Bean +i/roContro!!er
pac"age br1com1i$e%boo"store1.sf1beans>

import .ava1io1Seriali%able> import .ava1util1Lin"e$List> import .ava1util1List> import .ava 1e.b1EJB> import .ava 1faces1application1(aces!essage> import .ava 1faces1bean1!anage$Bean> import .ava 1faces1bean1!anage$Property> import .ava 1faces1bean1)e*uestScope$> import .ava 1faces1conte t1(acesConte t> import .ava 1faces1event1ComponentSystemEvent> import .ava 1faces1mo$el1&ata!o$el> import .ava 1in.ect1'ame$>

import br1com1i$e%boo"store1e.bs1@erencia$orLivros> import br1com1i$e%boo"store1mo$el1Categoria> import br1com1i$e%boo"store1mo$el1E$itora> import br1com1i$e%boo"store1mo$el1ItensPe$i$o> import br1com1i$e%boo"store1mo$el1Livro> import br1com1i$e%boo"store1mo$el1Pro$uto> import br1com1i$e%boo"store1mo$el1Publicacao>

5!anage$Bean2name7AlivroControllerA4eager7true3 5)e*uestScope$ public class LivroController e ten$s AbstractController implements Seriali%able B

11111111111111private Livro livro> 11111111111111 11111111111111private Publicacao publicacao> 11111111111111 11111111111111private Integer co$Categoria> 11111111111111 11111111111111private Integer co$Publicacao> 11111111111111 11111111111111private Integer *uanti$a$ePaginas>

111111111111115EJB

O<
11111111111111private @erencia$orLivros gerencia$orLivrosEJB> 11111111111111 111111111111115!anage$Property2value7ACBcarrin#oControllerDA3 11111111111111private Carrin#oController carrin#o> 11111111111111 11111111111111public String alterarPublicacao23B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111 D catc# 2E ception e3 B e1printStac"Trace23> (acesConte t1getCurrentInstance231a$$!essage2null4 return AlivroAltera$oComSucessoJfaces,re$irect7trueA> try B Publicacao pro$uto&etal#a$o 7 getCarrin#o231getPublicacao&etal#a$a23> pro$uto&etal#a$o1setAnoPublicacao2publicacao1getAnoPublicacao233> pro$uto&etal#a$o1setIsbn2publicacao1getIsbn233> pro$uto&etal#a$o1set'umeroE$icao2publicacao1get'umeroE$icao233> gerencia$orLivrosEJB1alterarPublicacao2pro$uto&etal#a$o3>

11111111111111 ne0 (aces!essage2(aces!essage1SE+E)ITGHE))-)4 AAlteracao nao efetiva$a1A4 AAlteracao nao efetiva$a1A33> 11111111111111 get(las#231setIeep!essages2true3>

11111111111111 11111111111111 11111111111111 11111111111111D 11111111111111 D

return Aerro'aAlteracaoJfaces,re$irect7trueA>

11111111111111public String a$icionarItemCarrin#o23B 11111111111111 11111111111111 11111111111111 11111111111111 11111111111111D 11111111111111 11111111111111public voi$ carregarPublicacao2ComponentSystemEvent cse3B 11111111111111 11111111111111 11111111111111D D publicacao 7 gerencia$orLivrosEJB1pes*uisarPublicacaoPorCo$igo2co$Publicacao3> getCarrin#o231setPublicacao&etal#a$a2publicacao3> return A!euCarrin#oJfaces,re$irect7trueA> Publicacao pro$uto&etal#a$o 7 getCarrin#o231getPublicacao&etal#a$a23> getCarrin#o231a$icionarItemCarrin#o2pro$uto&etal#a$o1getPro$uto233>

C!asse EJB *eren iador+i/rosEJB


pac"age br1com1i$e%boo"store1e.bs>

O?

import .ava1util1Has#Set> import .ava1util1List> import .ava1util1Set> import .ava 1annotation1security1PermitAll> import .ava 1annotation1security1)olesAllo0e$> import .ava 1e.b1Local> import .ava 1e.b1Stateless> import .ava 1e.b1TransactionAttribute> import .ava 1e.b1TransactionAttributeType> import .ava 1e.b1Transaction!anagement> import .ava 1e.b1Transaction!anagementType> import .ava 1persistence1Entity!anager> import .ava 1persistence1PersistenceConte t> import .ava 1persistence1Query>

import br1com1i$e%boo"store1mo$el1Autor> import br1com1i$e%boo"store1mo$el1AutorLivro> import br1com1i$e%boo"store1mo$el1AutorLivroPI> import br1com1i$e%boo"store1mo$el1Categoria> import br1com1i$e%boo"store1mo$el1E$itora> import br1com1i$e%boo"store1mo$el1Livro> import br1com1i$e%boo"store1mo$el1Pro$uto> import br1com1i$e%boo"store1mo$el1Publicacao>

5Stateless 5Local2@erencia$orLivros1class3 5TransactionAttribute2TransactionAttributeType1'-THS6PP-)TE&3 public class @erencia$orLivrosEJB implements @erencia$orLivros B

111111111111115PersistenceConte t2unit'ame7APro.etoI$e%EJBA3 11111111111111private Entity!anager em> 11111111111111 111111111111115TransactionAttribute2TransactionAttributeType1)EQ6I)E&3 11111111111111public voi$ alterarPublicacao2Publicacao pubAltera$o3 B 11111111111111 Publicacao publicacao 7 em1fin$2Publicacao1class4pubAltera$o1getCo$Publicacao233>

11111111111111 11111111111111 11111111111111 11111111111111 11111111111111

publicacao1setAnoPublicacao2pubAltera$o1getAnoPublicacao233> publicacao1setIsbn2pubAltera$o1getIsbn233> publicacao1set'umeroE$icao2pubAltera$o1get'umeroE$icao233> publicacao1setE$itora2publicacao1getE$itora233> publicacao1setPro$uto2publicacao1getPro$uto233>

OB
11111111111111 11111111111111D D

C!asse entidade Pub!i a ao


pac"age br1com1i$e%boo"store1mo$el>

import .ava1io1Seriali%able> import .ava1util1Set> import .ava 1persistence1Basic> import .ava 1persistence1Casca$eType> import .ava 1persistence1Column> import .ava 1persistence1Entity> import .ava 1persistence1(etc#Type> import .ava 1persistence1@enerate$+alue> import .ava 1persistence1@enerationType> import .ava 1persistence1I$> import .ava 1persistence1JoinColumn> import .ava 1persistence1!anyTo-ne> import .ava 1persistence1'ame$Queries> import .ava 1persistence1'ame$Query> import .ava 1persistence1-neTo!any> import .ava 1persistence1-neTo-ne> import .ava 1persistence1Table> import .ava 1persistence1Table@enerator>

import org1#ibernate1annotations1Cac#e> import org1#ibernate1annotations1Cac#eConcurrencyStrategy>

5Entity 5Table2name 7 ApublicacaoA3 5'ame$Queries2B 5'ame$Query2name 7 APublicacao1fin$AllA4 *uery 7 ASELECT p ()-! Publicacao pA34 5'ame$Query2name 7 APublicacao1fin$ByAnoPublicacaoA4 *uery 7 ASELECT p ()-! Publicacao p /HE)E p1anoPublicacao 7 8anoPublicacaoA34 5'ame$Query2name 7 APublicacao1fin$By'umeroE$icaoA4 *uery 7 ASELECT p ()-! Publicacao p /HE)E p1numeroE$icao 7 8numeroE$icaoA34 5'ame$Query2name 7 APublicacao1fin$ByCo$PublicacaoA4 *uery 7 ASELECT p ()-! Publicacao p /HE)E p1co$Publicacao 7 8co$PublicacaoA34 5'ame$Query2name 7 APublicacao1fin$ByIsbnA4 *uery 7 ASELECT p ()-! Publicacao p /HE)E p1isbn 7 8isbnA3D3 5Cac#e2usage7Cac#eConcurrencyStrategy1T)A'SACTI-'AL3 public class Publicacao implements Seriali%able B private static final long serial+ersion6I& 7 ;L>

OJ
5Basic2optional 7 false3 5Column2name 7 AanoHpublicacaoA3 private String anoPublicacao> 5Basic2optional 7 false3 5Column2name 7 AnumeroHe$icaoA3 private s#ort numeroE$icao> 5I$ 5Table@enerator2allocationSi%e7;4initial+alue7;4name7ApublicacaoHse*A4 table7Ase*uenceA4p"Column'ame7ASEQH'A!EA4 valueColumn'ame7ASEQHC-6'TA4 sc#ema7Ai$e%boo"storeA3 5@enerate$+alue2strategy7@enerationType1TABLE4 generator7ApublicacaoHse*A3 5Basic2optional 7 false3 5Column2name 7 Aco$HpublicacaoA3 private Integer co$Publicacao> 5Column2name 7 AisbnA3 private String isbn> 5JoinColumn2name 7 AlivroA4 reference$Column'ame 7 Aco$HlivroA3 5!anyTo-ne2optional 7 false3 private Livro livro> 5JoinColumn2name 7 Apro$utoA4 reference$Column'ame 7 Aco$Hpro$utoA4 insertable 7 false4 up$atable 7 false3 5-neTo-ne2optional 7 false3 private Pro$uto pro$uto> 5JoinColumn2name 7 Ae$itoraA4 reference$Column'ame 7 Aco$He$itoraA3 5!anyTo-ne2optional 7 false3 private E$itora e$itora>

public Publicacao23 B D 5-verri$e public int #as#Co$e23 B int #as# 7 O> #as# P7 2co$Publicacao Q7 null J co$Publicacao1#as#Co$e23 8 O3> return #as#> D

5-verri$e public boolean e*uals2-b.ect ob.ect3 B if 2Q2ob.ect instanceof Publicacao33 B return false> D Publicacao ot#er 7 2Publicacao3 ob.ect>

O>
if 22t#is1co$Publicacao 77 null RR ot#er1co$Publicacao Q7 null3 SS 2t#is1co$Publicacao Q7 null RR Q t#is1co$Publicacao1e*uals2ot#er1co$Publicacao333 B return false> D return true> D D

&rEui/o persisten e(,m!


EJ ml version7A;1OA enco$ing7A6T(,TAJF Epersistence version7A=1OA mlns7A#ttp8NN.ava1sun1comN mlNnsNpersistenceA mlns8 si7A#ttp8NN00010<1orgN=OO;NU!LSc#ema,instanceA si8sc#emaLocation7A#ttp8NN.ava1sun1comN mlNnsNpersistence #ttp8NN.ava1sun1comN mlNnsNpersistenceNpersistenceH=HO1 s$AF Epersistence,unit name7APro.etoI$e%EJBA transaction,type7AJTAAF 11111111111111 11111111111111 11111111111111 11111111 E.ta,$ata,sourceF.ava8N.$bcHmys*lHi$e%EN.ta,$ata,sourceF Ee clu$e,unliste$,classesFfalseENe clu$e,unliste$,classesF EpropertiesF Eproperty name7A#ibernate1cac#e1useHsecon$HlevelHcac#eA value7AtrueANF

11111111 Eproperty name7A#ibernate1cac#e1region1factoryHclassA value7Aorg1#ibernate1cac#e1infinispan1Jn$iInfinispan)egion(actoryANF 11111111111111 Eproperty name7A#ibernate1cac#e1infinispan1cac#emanagerA value7A.ava8Cac#e!anagerNentityANF 1111111111ENpropertiesF 11111111111111ENpersistence,unitF ENpersistenceF

Você também pode gostar