You are on page 1of 17

Aplicaciones Web con Oracle y XML

5 aos de experiencias

Daniel Lpez Janriz CTI@UIB

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

Introduccin
#ese a $%e &o en d'a las aplicaciones (eb son %na sol%cin &abi)%al para acceder a sis)e*as basados en Oracle+ el desarrollo de ,s)as no acaba de alcanzar la prod%c)i-idad $%e se sol'a alcanzar con sis)e*as *s )radicionales. Las ca%sas de es)os proble*as de desarrollo no slo &an de b%scarse en la /al)a de *ad%rez de la )ecnolo0'a las prisas a la &ora de crear prod%c)os en 1)ie*po In)erne)2+ si no $%e ade*s &a $%e )ener en c%en)a las necesidades sie*pre ca*bian)es de los %s%arios la -elocidad a la $%e se prod%cen los ca*bios )an)o en )ecnolo0'a co*o en los re$%eri*ien)os en es)e )ipo de en)ornos. 3s)o es as' por $%e las aplicaciones para In)erne) s%elen s%/rir %nos re$%eri*ien)os ca*bian)es+ sobre )odo en c%an)o a diseo es),)ico+ s%elen dis/r%)ar de poco )ie*po para %n b%en anlisis diseo+ al0o $%e s' se s%ele )ener *s en c%en)a en o)ros )ipos de aplicaciones. #or o)ro lado+ la a*pli)%d del *ercado al c%al p%eden lle0ar n%es)ras aplicaciones a )ra-,s de la red de redes es in*ensa por ello+ debe*os es)ar preparados para adap)arlas a n%e-as si)%aciones co*o di/eren)es idio*as+ acceso a )ra-,s de dis)in)os disposi)i-os+ e)c. #ara *ini*izar los e/ec)os de )odos es)os ca*bios+ %na al)erna)i-a es desarrollar n%es)ras aplicaciones de /or*a $%e s%s par)es in)e0ran)es p%edan ser *odi/icadas independien)e*en)e %nas de o)ras+ consi0%iendo as' $%e las par)es a/ec)adas sean las *'ni*as posibles. #ara ello se s%elen %)ilizar desarrollos di-ididos en capas+ in)en)ando *ini*izar las dependencias de %nas capas con o)ras. Al *is*o )ie*po se in)en)a cen)ralizar %na serie de ser-icios+ se0%ridad+ )razas+ acceso a BDD4+ para $%e es)e )ipo de ser-icios co*%nes no acabe dis0re0ado en)re las di/eren)es capas+ con-ir)i,ndose as' en %n proble*a de *an)eni*ien)o. Ba5o es)as pre*isas exis)en *%l)i)%d de sol%ciones ar$%i)ec)%ras prop%es)as+ cada %na con s%s -en)a5as e incon-enien)es cada %na consi0%iendo en *a or o *enor *edida separar las di/eren)es capas en)re si. 3n c%an)o a la cen)ralizacin de ser-icios co*%nes+ %na ),cnica reconocida a*plia*en)e %)ilizada es el %so de de pa)rones )ipo 1"odel6 7ie(6Con)roller2 8"7C9 o 1"odel67ie(6#resen)er2 8"7#9+ en los c%ales se reco*ienda di-idir n%es)ra aplicacin en co*ponen)es para $%e los da)os 8el *odelo9 c*o se represen)an es)os 8las -is)as9 sean independien)es se relaciones a )ra-,s de ese ele*en)o cen)ralizador 8lla*ado con)rolador o presen)ador9 $%e es el $%e se encar0a de conse0%ir la deseada independencia en)re el *odelo la -is)a. #ero %na -ez de)er*inada la ar$%i)ec)%ra 0lobal $%e $%ere*os di-idir en capas n%es)ra aplicacin+ )oda-'a $%eda decidir c*o en-iar los da)os desde el *odelo a la -is)a. 3s)a decisin condicionar 0rande*en)e n%es)ra sol%cin /inal+ a $%e )a*bi,n exis)en *%l)i)%d de sol%ciones al0%nas de ellas no acaban de conse0%ir la independencia deseada+ al condicionar la )ecnolo0'a $%e pode*os %sar en la o)ra capa. : a&' es donde en)ra en 5%e0o el !"L 8eX)ensible Mar;%p Lan0%a0e9+ a $%e p%ede ser %sado para de/inir %na capa independien)e de )ecnolo0'a en)re di/eren)es par)es de n%es)ra aplicacin. : esa es la ),cnica $%e &e*os -enido %)ilizando en el Cen)ro de Tecnolo0'as de la In/or*acin de la Uni-ersi)a) de les Illes Balears 8CTI@UIB9 $%e describire*os en es)a ponencia+ -iendo s%s or'0enes+ s% e-ol%cin las concl%siones sobre s% %so $%e &e*os podido ex)raer )ras *s de cinco aos de experiencias. C%ore <==5 #0. <

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

Los orgenes
3l desarrollo (eb en el CTI@UIB co*enz alrededor de >??@+ con al0%na bre-e inc%rsin en el *%ndo de los CAI+ pro0ra*ados en C+ los c%ales para acceder a los da)os %)ilizaban %n preco*pilador propie)ario del /abrican)e de base de da)os. Bin e*bar0o+ pron)o se &izo e-iden)e $%e dic&a ar$%i)ec)%ra no era escalable ni pro*e)'a %n *an)eni*ien)o /cil a lar0o plazo+ dada s% ri0idez escasez de &erra*ien)as para con)rolar 0es)ionar el cdi0o de las aplicaciones+ a $%e ,s)e se iba dis)rib% endo en *%l)i)%d de pe$%eos pro0ra*as en C. #or o)ro lado+ el acceso a bases de da)os se realizaba a )ra-,s de sen)encias BCL escri)as en)re*ezcladas con el cdi0o en C+ con lo c%al las *odi/icaciones en el es$%e*a de los da)os obli0aba a ras)rear a *ano las sen)encias BCL a/ec)adas+ lo c%al era %n proceso )edioso propenso a errores. 3l si0%ien)e paso /%e experi*en)ar con %n ser-idor de aplicaciones de recien)e creacin+ el Web Ber-er de Oracle+ $%e per*i)'a crear los pro0ra*as en /or*a de procedi*ien)os #LDBCL a0r%pados en pa$%e)es. Desde el p%n)o de -is)a del pro0ra*ador+ los procedi*ien)os #LBCL recib'an direc)a*en)e los par*e)ros 0eneraban el ET"L $%e se en-iaba co*o resp%es)a+ por lo $%e no &ac'a /al)a *s $%e conocer #LBCL para poder 0enerar aplicaciones (eb. Ade*s+ al )ener los procedi*ien)os #LDBCL dependencias en )ie*po de co*pilacin sobre el es$%e*a de base de da)os poder a0r%par ,s)os ba5o %s%arios Oracle den)ro de la *is*a base de da)os+ la 0es)in el *an)eni*ien)o se -e'a enor*e*en)e /acili)ada. Bin e*bar0o+ el proble*a principal de es)a ar$%i)ec)%ra era $%e+ al 0enerar la in)er/az ET"L desde los procedi*ien)os #LDBCL+ el *an)eni*ien)o de las aplicaciones+ principal*en)e la in)er/az+ no era lo s%/icien)e*en)e /lexible al necesi)ar %n pro0ra*ador #LDBCL acceso a la base de da)os para c%al$%ier ca*bio. 3s)o+ $%e en s%s or'0enes no era %n proble*a+ acab creando proble*as de *an)eni*ien)o a lar0o plazo+ a *edida $%e a%*en)aban el nF*ero ex)ensin de las aplicaciones. #or o)ro lado+ exis)'an %na serie de )areas $%e i*plicaban acceso a *s ba5o ni-el $%e no se pod'an realizar c*oda*en)e desde #LBCL+ por lo $%e &ac'a /al)a co*ple*en)arlo con al0o *s $%e c%briera ese &%eco. "s adelan)e+ al aparecer Ja-a en el ser-idor a )ra-,s de los ser-le)s las p0inas JB#+ se exploraron o)ras opciones+ con el /in de ir e-ol%cionando sol-en)ar los proble*as an)es *encionados+ pero /inal*en)e /%eron desec&adas por di/eren)es *o)i-os. 3n)re ,s)as+ pode*os *encionarG Servlets puros + JD !" 3s)a pri*era opcin era *% si*ilar al %so de pro0ra*as CAI+ con al0%nas -en)a5as i*por)an)es pero no s%/icien)es+ por lo $%e pese a dic&as -en)a5as 8independencia de pla)a/or*a+ *e5or rendi*ien)o49 /%e descar)ada rpida*en)e. Un proble*a rec%rren)e $%e a 'ba*os de)ec)ando co*Fn en )odas las sol%ciones %)ilizadas &as)a a&ora era la 0eneracin del ET"L desde el propio cdi0o $%e acced'a a la base de da)os+ as' $%e a par)ir de en)onces se con-ir)i en %n p%n)o i*por)an)e a la &ora de b%scar %na sol%cin. JS# + $J %&%" Una opcin *% pop%lar en s% *o*en)o+ debida al i*p%lso del *ar;e)in0 la escasez de sol%ciones no propie)arias orien)adas al desarrollo de sol%ciones e*presariales+ $%e es)%dia*os con de)eni*ien)o. Las -en)a5as $%e #0. H

C%ore <==5

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

o/rec'a eran la posibilidad de poder separar la l0ica de ne0ocio+ i*ple*en)ado en los 3JB de sesin+ de la presen)acin+ $%e se realizaba en base a p0inas JB#. Bin e*bar0o+ al sol%cionar el proble*a de la di-isin en capas nos encon)ra*os con o)ros+ principal*en)e la /al)a de *ad%rez e la especi/icacin+ el rendi*ien)o+ la proli/eracin de cdi0o Ja-a en las JB# dependien)e del *odelo+ por lo $%e el *an)eni*ien)o acababa -ol-i,ndose de n%e-o co*plicado. JS# + eans + JD !" 3sperando a $%e la especi/icacin 3JB *ad%rase+ %na sol%cin al)erna)i-a $%e se b%sc /%e el %)ilizar si*ples Beans con JDBC p%ro para i*ple*en)ar la l0ica+ s%s)i)% endo a los co*ponen)es 3JB. #ese a $%e con es)a sol%cin se p%ede separar de i0%al *odo la l0ica de la in)er/az+ los proble*as $%e )ra5o /%eronG #or %n lado+ la %)ilizacin de JDBC p%ro den)ro de n%es)ras clases di/ic%l)a en cier)a /or*a el *an)eni*ien)o+ a $%e ca*bios en el es$%e*a de la base de da)os no pro-ocan errores de co*pilacin si no de e5ec%cin+ con lo $%e re$%ieren %na 0ran disciplina con)rol para pre-enir es)e )ipo de /allos. #or o)ro lado+ dado $%e las librer'as de e)i$%e)as apenas exis)'an+ la 0eneracin de la in)er/az desde &o5as JB# se0%'a i*plicando in)rod%cir cdi0o en Ja-a en las p0inas+ con los proble*as $%e ello acarrea.

Las di/eren)es sol%ciones con es)os ele*en)os &an ido e-ol%cionando se &an sol%cionado al0%nos de los proble*as $%e )en'an+ sin e*bar0o en a$%el *o*en)o no pod'a*os sen)arnos a esperar al /%)%ro decidi*os disear %na sol%cin propia. Aracias a los conoci*ien)os ad$%iridos con )odos es)os experi*en)os+ decidi*os crear %na n%e-a ar$%i)ec)%ra $%e apor)ara las -en)a5as+ e in)en)ando e-i)ar caer en los proble*as+ $%e &ab'a*os encon)rado en los di/eren)es sis)e*as. Al *is*o )ie*po+ en la lis)a de dis)rib%cin jsp-interest par)icipa*os en %na serie de in)eresan)es in)erca*bios de opiniones sobre el *odelo "7C s% aplicacin a )ra-,s de la ),cnica de Servlet Controlador. #or o)ro lado+ )a*bi,n se co*enzaba a &ablar de Ja-a !"L co*o %na poderosa co*binacin+ per*i)iendo la co*%nicacin de da)os en)re procesos de %na /or*a independien)e de la i*ple*en)acin de cada proceso. !BLT era la Fl)i*a pieza $%e nos /al)aba en el p%zzle enca5ando las piezas crea*os n%es)ra propia ar$%i)ec)%ra basada en %n Ber-le) con)rolador $%e i*ple*en)aba el *odelo "7C co*%nicaba la l0ica de ne0ocio+ i*ple*en)ada en procedi*ien)os #LBCL+ con la -is)a a )ra-,s de !"L+ $%e desp%,s se )rans/or*aba en ET"L 0racias a !BLT.

C%ore <==5

#0. I

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

La i'ple'entacin
Una -ez decidido $%e necesi)ba*os desarrollar %n en)orno propio+ dado $%e en a$%ellos )ie*pos no exis)'a nada parecido al B)r%)s+ Bprin04 pasa*os a esco0er c%ales ser'an las )ecnolo0'as $%e 'ba*os a %)ilizar para cada %na de las par)es. Co*o a se &a *encionado+ esco0i*os %na ar$%i)ec)%ra basada en !"L !BL+ con la i*ple*en)acin de la l0ica en #LBCL+ por los si0%ien)es *o)i-osG 3sco0i*os %sar #LBCL co*o base para i*ple*en)ar la l0ica de ne0ocio debido a las -en)a5as $%e &ab'a*os -is)o al %sar el Web Ber-er de OracleG #rincipal*en)e $%e 0racias a #LDBCL exis)e %na dependencia en)re la l0ica de aplicacin el es$%e*a de base de da)os+ por lo $%e es ca*bios en el es$%e*a son /cil*en)e de)ec)ables en )ie*po de co*pilacin. Ade*s+ pese a ser #LDBCL %n len0%a5e propie)ario+ es independien)e de pla)a/or*a se e5ec%)a independien)e*en)e del sis)e*a opera)i-o donde )en0a*os n%es)ra base de da)os. #or Fl)i*o+ a )en'a*os experiencia 0en)e /or*ada en #LBCL+ no )an)a en Ja-a+ al no )ener $%e 0enerar ET"L+ ni )ra)ar nada (eb de &ec&o+ desde #LBCL+ c%al$%ier pro0ra*ador con experiencia en #LBCL+ a%n$%e no s%piera nada de (eb+ pod'a incorporarse al desarrollo de aplicaciones (eb. 3sco0i*os !"L co*o len0%a5e para co*%nicar ne0ocio presen)acin !BL co*o len0%a5e para i*ple*en)ar la l0ica de presen)acin por ser especi/icaciones a de/inidas e independien)es de la i*ple*en)acin del res)o de piezas 8Ja-a+ #LBCL49. #or o)ro lado+ dado $%e la creacin de librer'as de e)i$%e)as para JB# )oda-'a es)aba en s% in/ancia+ la al)erna)i-a era %sar o)ro len0%a5e de e)i$%e)as propie)ario o in-en)ar n%es)ras propias e)i$%e)as+ para al /inal acabar replicando la /%ncionalidad de !BL en %n len0%a5e propie)ario dependien)e de la i*ple*en)acin de %na de las capas. 3sco0i*os Ja-a co*o base para el nFcleo de la ar$%i)ec)%ra por s%s carac)er's)icas de *%l)ipla)a/or*a /acilidad de acceso a base de da)os a )ra-,s de JDBC. Ta*bi,n nos per*i)'a *ane5ar procesar !"L !BL as' $%e enca5aba per/ec)a*en)e en s% papel de in)er*ediario por o)ro lado+ nos per*i)'a c%brir esa pe$%ea par)e de la l0ica $%e depend'a del acceso al ser-idor (eb+ por e5e*plo+ $%e se realizaba de /or*a di/'cil desde #LBCL.

Una -ez decididas las piezas+ i*ple*en)a*os %na sol%cin si*ilar en cier)os aspec)os al Web Ber-er de Oracle+ pero 0enerando !"L+ en -ez de ET"L+ desde #LBCL. "s adelan)e se plan)eo+ por %n lado+ la necesidad de poder %)ilizar la *is*a ),cnica para poder acceder o)ras bases de da)os + por o)ro lado+ el poder i*ple*en)ar la l0ica de ne0ocio ex)erna*en)e a la base de da)os+ para poder dis)rib%ir la car0a. De a&' $%e in)rod%5,ra*os la posibilidad de i*ple*en)ar la l0ica de ne0ocio en Ja-a+ pri*ero a )ra-,s de 3JB de sesin *s )arde a )ra-,s del %so de Eiberna)e.

C%ore <==5

#0. 5

Daniel Lpez Janriz CTI@UIB Bin e*bar0o+ la ar$%i)ec)%ra bsica si0%e siendo la *is*a de ser-ir %na pe)icin en dos /asesG

Aplicaciones Web con Oracle !"L en 0eneral di-ide el proceso

La pri*era /ase consis)e en 0enerar %n doc%*en)o !"L desde la l0ica de la aplicacin. 3n es)a par)e es donde s%elen di/erenciarse *s las dis)in)as i*ple*en)aciones+ a $%e %n doc%*en)o !"L no es *s $%e )ex)o $%e si0%e %nas re0las de /or*a)eo se p%ede 0enerar de *Fl)iples /or*as. Desde las ),cnicas *s si*ples+ co*o 0enerar el !"L conca)enando cadenas+ en #LBCL o en Ja-a+ de /or*a si*ilar a co*o se 0eneraba el ET"L an)erior*en)e+ 0enerarlo a %dado por librer'as+ %)ilizar de p0inas JB# co*o plan)illas+ conca)enar /il)ros $%e reciben 0eneran !"L+ caso del Cocoon...+ &as)a la 0eneracin de Ja-a Beans $%e son )rad%cidos a%)o*)ica*en)e a es)r%c)%ras !"L+ exis)en sol%ciones para )odos los 0%s)os. La se0%nda /ase consis)e en procesar el doc%*en)o !"L a )ra-,s de %na &o5a de es)ilo !BLT de /or*a $%e el res%l)ado de la )rans/or*acin sea la in)er/az deseada. La i*ple*en)acin de es)a par)e en Ja-a es *% sencilla a )ra-,s del A#I para )rans/or*aciones de !"L 8TrA!9+ el c%al per*i)e %)ilizar di/eren)es procesadores !BL sin ca*biar el cdi0o. #ara *e5orar el rendi*ien)o se s%elen %)ilizar ),cnicas co*o el al*acenar las &o5as !BL preprocesadas+ procesar el !"L a *edida $%e se -a 0enerando...

La co*ple5idad p%ede -ariar se0Fn c*o se %)ilice es)a ),cnica bsica p%es)o $%e+ por e5e*plo+ el doc%*en)o !"L p%ede 0enerarse a par)ir de -arias /%en)es+ o el res%l)ado de la )rans/or*acin p%ede no ser el res%l)ado /inal+ sino solo %n res%l)ado in)er*edio+ co*o en el caso de 0eneracin de doc%*en)os #DJ. Bin e*bar0o+ la idea co*Fn es $%e la l0ica de aplicacin el proceso $%e se encar0a de 0enerar la in)er/az se co*%ni$%en a )ra-,s %n doc%*en)o !"L.

(igura %" Diagra'a b)sico de una ar*uitectura basada en XML+XSL

C%ore <==5

#0. @

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

3n)rando *s en de)alle+ sobre la idea bsica de las aplicaciones (eb !"LD!BL con los ele*en)os $%e &ab'a*os esco0ido+ la ar$%i)ec)%ra $%e i*ple*en)a*os+ si0%iendo el *odelo "7C la ),cnica del 1Ber-le) Con)rolador2+ c%en)a con las si0%ien)es carac)er's)icasG 3l con)enedor (eb se con/i0%ra de /or*a $%e %n ser-le)+ el controlador+ pase a recibir )odas las pe)iciones diri0idas a la aplicacin. #ara ello se esco0en %no o -arios s%/i5os+ por e5e*plo K*.miappL+ se rediri0en )odas las pe)iciones $%e )en0an dic&os s%/i5os al ser-le) en c%es)in 3l controlador basa )odo s% co*por)a*ien)o en /ic&eros de con/i0%racin+ residen)es en el direc)orio W3B6IMJ de la aplicacin (eb. 3n dic&os /ic&eros se especi/ican los pasos a se0%ir se0Fn la operacin $%e se &a a solici)ado. #ara ello la operacin se especi/ica *edian)e el no*bre %)ilizado an)es del s%/i5o esco0ido. Bi0%iendo el e5e*plo an)erior %na pe)icin con UNL K&))pGDD...Dal)a.*iappL indicar'a la operacin Kal)aL. #ara responder a %na pe)icin+ en la con/i0%racin debe*os especi/icar cier)a in/or*acin. 3n el caso de las operaciones !"LD!BL+ lo *s i*por)an)e es indicar $%, /%en)es de da)os !"L &a $%e lla*ar para ser-ir la pe)icin $%, par*e)ros+ en caso necesario+ debe*os pasar a cada %na. 3n es)e caso+ deno*ina*os /%en)e !"L a c%al$%ier ori0en de da)os $%e nos de-%el-a %n con)enido !"L+ co*o por e5e*plo /ic&eros !"L+ lla*adas a /%nciones #LBCL $%e de-%el-en !"L+ e)c. 3n caso de especi/icar -arias /%en)es !"L para %na sola operacin+ nor*al*en)e slo &a %na de las /%en)es !"L $%e *odi/ica da)os el res)o son Fnica*en)e de cons%l)a+ para e-i)ar in)er/erencias. La idea de especi/icar dic&as /%en)es por separado es *e5orar la re%)ilizacin de las cons%l)as per*i)ir el %so con5%n)o de di/eren)es )ipos de /%en)es+ co*o /ic&eros es))icos+ lla*adas a 3JB...Ta*bi,n debe*os indicar $%, &o5a de es)ilo !BLT -a*os a %)ilizar para procesar el res%l)ado de 5%n)ar las resp%es)as de )odas las /%en)es !"L. Bi no indica*os nin0%na+ el !"L res%l)an)e ser de-%el)o K)al c%alL+ lo c%al es F)il para pr%ebas en desarrollo o para i*ple*en)ar operaciones si*ilares a %n ser-icio (eb. A )ra-,s de la con/i0%racin )a*bi,n pode*os indicar $%e+ en caso de ser accedidos por %n na-e0ador en par)ic%lar o en caso de ser accedidos desde %n )el,/ono *-il+ $%ere*os %sar %na &o5a !BLT di/eren)e+ ca*biar al0%na /%en)e de da)os... Ta*bi,n pode*os ca*biar esos a)rib%)os dependiendo de la localizacin especi/icada por el %s%ario+ lo c%al p%ede &acerse a )ra-,s de %na -ariable especial $%e se al*acena en la sesin. De es)a /or*a pode*os adap)ar la in)er/az se0Fn *Fl)iples par*e)ros co*o idio*a deseado+ disposi)i-o o na-e0ador desde el $%e se accede... Incl%so pode*os especi/icar %n co*por)a*ien)o di/eren)e se0Fn el s%/i5o $%e se %)ilice+ en caso de )ener -arios con/i0%rados. A lo lar0o del )ie*po &e*os ido aadiendo o)ros pe$%eos de)alles co*o ,s)os+ pero en)rare*os *s en pro/%ndidad en las posibilidades $%e brinda la con/i0%racin en el si0%ien)e )e*a+ al *os)rar e5e*plos reales de aplicaciones $%e las %)ilizan. Un apar)ado i*por)an)e $%e )a*bi,n per*i)e especi/icar la con/i0%racin es la posibilidad de procesar las pe)iciones an)es de ac%dir a las /%en)es !"L o

C%ore <==5

#0. O

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

de procesar el !"L res%l)an)e an)es de ser 0enerada la in)er/az. PC%ndo es necesaria es)a carac)er's)icaQ #ocas -eces+ pero a -eces es *% F)il. #or e5e*plo+ si pro0ra*a*os n%es)ras /%en)es !"L en #LDBCL &e*os de en-iar %n *ensa5e de correo elec)rnico+ o al0%na )area si*ilar no propia de #LDBCL+ se0Fn el res%l)ado de la cons%l)a+ pode*os e5ec%)ar %na clase Ja-a $%e procese el !"L res%l)an)e en-'e el *ensa5e %)ilizando las /acilidades $%e nos da es)e len0%a5e en -ez de #LDBCL. Ta*bi,n es F)il si i*ple*en)a*os la l0ica de la aplicacin %sando 3JB+ a $%e exis)en res)ricciones sobre lo $%e es)e )ipo de clases p%eden &acer 8acceso a /ic&eros+ *ane5o de conexiones de red+ &ilos de e5ec%cin...9 #or Fl)i*o+ resear $%e el Servlet Controlador se encar0a ade*s de 0es)ionar %na cac&e de &o5as !BLT preco*piladas+ de las )razas+ de la se0%ridad... a $%e al cen)ralizar el acceso a la aplicacin+ se /acili)a la 0es)in de )odos es)os aspec)os.

#ode*os -er %n es$%e*a de la ar$%i)ec)%ra /inal en la si0%ien)e /i0%raG

(igura ," Diagra'a de las posibilidades de la ar*uitectura

C%ore <==5

#0. R

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

C%ore <==5

#0. ?

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

La evolucin
La i*ple*en)acin inicial del en)orno de desarrollo de aplicaciones en base a !"LD!BL /inaliz en la pri*a-era de >???+ desde en)onces &as)a a&ora &a sido %)ilizado con ,xi)o en *s de %na )rein)ena de aplicaciones (eb en el CTI@UIB. #ero eso no i*plica $%e el en)orno se &a a *an)enido in*-il d%ran)e )odo es)e )ie*po+ si no $%e se &a ido adap)ado a las necesidades la e-ol%cin de las especi/icaciones relacionadas+ principal*en)e la Ja-a Ber-le) Bpeci/ica)ion. Bin e*bar0o+ dado $%e el *odelo respond'a bas)an)e adec%ada*en)e a n%es)ras necesidades+ pese a al0%nos incon-enien)es+ las *odi/icaciones no /%eron excesi-as respondieron *s bien a %n proceso de re/ina*ien)o *e5ora. 3n concre)o+ los p%n)os $%e &e*os ido re)ocando+ apar)e de la l0ica dep%racin de posibles errores pode*os des)acar los si0%ien)esG "e5ora del acceso a base de da)os+ co*o nFcleo cen)ral de las aplicaciones basadas en #LBCL+ para &acer las aplicaciones *s resis)en)es a paradas del ser-idor de base de da)os+ proble*as en las co*%nicaciones e)c. Mo en el sen)ido $%e la aplicacin si0a /%ncionando+ cosa $%e no p%ede &acer+ si no $%e se rec%pere a%)o*)ica*en)e c%ando la BDD o las co*%nicaciones se res)ablecen. Ta*bi,n incre*en)a*os las )razas la in/or*acin $%e se p%ede ob)ener del 0es)or de conexiones+ para poder dia0nos)icar proble*as de sa)%racin poder sol%cionarlos en )ie*po de e5ec%cin. A%*en)o de la /lexibilidad en las opciones de con/i0%racin+ per*i)iendo %na localizacin /cil de las aplicaciones per*i)iendo la adap)acin a%)o*)ica de al0%nos par*e)ros en /%ncin del )ipo de disposi)i-o con el $%e se accede a la aplicacin. 3s)o nos &a per*i)ido desarrollar aplicaciones en -arios idio*as con %na Fnica l0ica de ne0ocio %n solo con5%n)o de &o5as !BL+ -ariando Fnica*en)e las e)i$%e)as dependien)es del idio*aS al *is*o )ie*po desarrollar aplicaciones -isibles a )ra-,s del na-e0ador+ el *-il por WA# el acceso a )ra-,s de B"B+ co*par)iendo la *is*a l0ica de ne0ocio. A*pliacin de las posibilidades a la &ora de i*ple*en)ar la l0ica de ne0ocio 0enerar el !"L. Al principio co*enza*os con #LBCL /ic&eros es))icos !"L+ desp%,s aadi*os la posibilidad de %sar 3JB <.> de sesin+ clases Ja-a bsicas+ para in)e0rar operaciones sin acceso a base de da)os sin dependencias+ por Fl)i*o clases de )ipo DAO para acceder a bases de da)os a )ra-,s de Eiberna)e. De es)a /or*a pode*os c%brir los casos en los $%e los re$%eri*ien)os re$%ieren liber)ad en la base de da)os o pode*os %sar bases de da)os *enores en el desarrollo de pro)o)ipos+ ca*biando desp%,s en el desarrollo /inal a Oracle sin necesidad de escribir de n%e-o el cdi0o. Aeneracin a%)o*)ica de cdi0o a par)ir del es$%e*a de base de da)os. Desp%,s de )an)as aplicaciones desarrolladas+ &e*os sis)e*a)izado al0%nos de los procesos 8leer los par*e)ros de en)rada+ 0enerar !"L de %n re0is)ro+ pa0inar cons%l)as49 &e*os pasado a crear+ se0%i*os creando+ 0eneradores de cdi0o $%e nos /acili)en la labor de escribir es)e cdi0o repe)i)i-o.

C%ore <==5

#0. >=

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

C%ore <==5

#0. >>

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

La 'etodologa
Con la experiencia de ir desarrollando aplicaciones si0%iendo es)e sis)e*a+ /%i*os re/inando %na /or*a de )raba5ar $%e cris)alizo en %na *e)odolo0'a para abordar los pro ec)os con es)a ar$%i)ec)%ra. Dic&a *e)odolo0'a+ concernien)e a la par)e de diseo e i*ple*en)acin+ se p%ede di-idir en las si0%ien)es /asesG >. Diseo de %na *a$%e)a ET"L co*ple)a $%e represen)e la /%ncionalidad del prod%c)o con el *xi*o de)alle. La *a$%e)a sir-e )a*bi,n para re/inar el anlisis de la aplicacin+ si*ilar al desarrollo por pro)o)ipos+ a $%e se -a con)ras)ando con el %s%ario /inal. <. Una -ez /inalizada la *a$%e)a+ se ex)rae la in/or*acin de cada p0ina se realiza %n *odelo !"L de la in/or*acin necesaria para 0enerar cada p0ina ET"L. H. A par)ir del *odelo !"L del anlisis pre-io+ se de/ine el *odelo 3n)idad6 Nelacin el es$%e*a de base de da)os necesario para con)ener la in/or*acin de la aplicacin. Ade*s se de/ine el Kcon)ra)o !"LL $%e es la de/inicin de c*o+ en /or*a de doc%*en)o !"L+ se co*%nicar la l0ica de ne0ocio con la de 0eneracin de la in)er/az I. Be i*ple*en)an las &o5as de es)ilo !BLT para 0enerar el ET"L de/inido en la *a$%e)a inicial a par)ir del !"L del *odelo. 5. Una -ez /inalizadas las &o5as de es)ilo+ se con/i0%ra el en)orno WebL3AJ para $%e %)ilice el *odelo !"L 8en /or*a de /ic&eros es))icos9 co*o /%en)e en las operaciones !"L+ para $%e %)ilice las &o5as de es)ilo para 0enerar la in)er/az. @. Al *is*o )ie*po+ co*enzando 5%n)o con el p%n)o c%ar)o+ se -a i*ple*en)ando la l0ica de ne0ocio de /or*a $%e+ basndose en el es$%e*a de base de da)os diseado+ responda a los re$%eri*ien)os 0enere %na resp%es)a !"L basada en el con)ra)o !"L de/inido en el )ercer p%n)o O. Una -ez i*ple*en)ada la /%ncionalidad+ se s%s)i)% en en la con/i0%racin las re/erencias a los /ic&eros es))icos del *odelo !"L ori0inal por lla*adas a las r%)inas de la l0ica de ne0ocio $%e i*ple*en)en la /%ncionalidad deseada 0eneren el *is*o )ipo de resp%es)a !"L. As' se -a con-ir)iendo paso a paso la *a$%e)a es))ica en la aplicacin din*ica. R. La e)apa /inal es de adap)acin co*probacin. Al ca*biar de %sar /ic&eros es))icos a r%)inas reales &a $%e aadir par*e)ros+ co*probar $%e las di/eren)es resp%es)as din*icas se &an )enido en c%en)a+ co*o res%l)ados de bFs$%edas -ac'os o)ros pe$%eos de)alles. 3s)a /or*a de separar en /ases el desarrollo de /or*a clara nos per*i)e si*%l)anear al0%nas )areas asi0nar dis)in)os co*e)idos a dis)in)os *ie*bros del e$%ipo de desarrollo+ sin necesidad de $%e )odos los *ie*bros del e$%ipo sepan de )odo.

C%ore <==5

#0. ><

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

As' por e5e*plo+ si i*ple*en)a*os la l0ica de ne0ocio en #LBCL+ los pro0ra*adores encar0ados de dic&a )area no necesi)an saber nada de Ja-a+ ni de aplicaciones (eb+ ni de !BLT. Bi*ple*en)e deben se0%ir el con)ra)o !"L 0enerar el !"L de resp%es)a a par)ir de los par*e)ros de en)rada recibidos el *odelo de da)os. Al *is*o )ie*po+ el personal encar0ado de i*ple*en)ar las &o5as !BLT para la )rans/or*acin no )iene por $%e conocer el *odelo de da)os ni saber pro0ra*ar en #LBCL+ le bas)a conocer el con)ra)o !"L el res%l)ado ET"L+ W"L+ B7A4 $%e &a de 0enerar para cada doc%*en)o !"L a es). #or s%p%es)o+ para %na ar*onizacin correc)a de )odas las par)es+ el *e5or apro-ec&a*ien)o de los rec%rsos+ &ace /al)a con)ar con+ al *enos+ %na persona con %na -isin de con5%n)o *e5or si es con experiencia en )odas las reas+ pero al independizar %nas capas de o)ras no es necesario $%e )odos sepan de )odo. #ode*os -er %n dia0ra*a represen)ando el /l%5o de la *e)odolo0'a en la si0%ien)e /i0%raG

(igura -" Metodologa de desarrollo

C%ore <==5

#0. >H

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

.enta/as e inconvenientes
La i*ple*en)acin de aplicaciones (eb %sando !"L !BL es Fnica*en)e %na de las sol%ciones posibles+ con s%s p%n)os /%er)es s%s p%n)os d,biles+ $%e &an de ser -alorados adec%ada*en)e por cada or0anizacin. De las experiencias de )odos es)os aos %)ilizando es)e sis)e*a+ las carac)er's)icas $%e podr'a*os des)acar en es)e sen)ido sonG .enta/as. A /a-or de es)a ),cnica *encionar $%eG

#er*i)e separar )o)al*en)e la l0ica de ne0ocio de la 0eneracin de la presen)acin+ de s% l0ica. Min0%na )rans/or*acin $%e le &a0a*os al doc%*en)o !"L a/ec)ar al sis)e*a de in/or*acin ni a/ec)ar a la in)e0ridad de los da)os o de la l0ica de aplicacin. 3s)a separacin )a*bi,n nos a %da en la de)eccin de errores+ a $%e es *% sencillo separar los errores prod%cidos al *os)rar los da)os+ de los prod%cidos al 0enerarlos. Bin ol-idar $%e si %)iliza*os )odo el poder de !BL+ %sando las plan)illas adec%ada*en)e+ pode*os re%)ilizar par)es de la in)er/az a%*en)ar la prod%c)i-idad la co&erencia -is%al de la in)er/az. 3l len0%a5e %)ilizado para la 0eneracin de la in)er/az+ !BL+ es %na reco*endacin del World Wide Web Consor)i%* 8WHC9 independien)e de pla)a/or*a+ /abrican)e len0%a5e de pro0ra*acin. #or ello )iene *Fl)iples aplicaciones $%e no slo se li*i)an a las aplicaciones (eb en Ja-a. Ta*bi,n i*plica $%e pode*os encon)rar i*ple*en)aciones de di/eren)es /abrican)es esco0er la $%e *s nos con-en0a se0Fn n%es)ros re$%eri*ien)os de precio+ sopor)e+ rendi*ien)o... Al *is*o )ie*po si0ni/ica $%e es %n len0%a5e *ad%ro+ *% doc%*en)ado probado+ &aciendo *s /cil /or*ar a la 0en)e+ o encon)rar a la 0en)e a /or*ada+ $%e con %n len0%a5e propie)ario o *inori)ario. La separacin en dos e)apas /acili)a enor*e*en)e la creacin de aplicaciones $%e deben ser accedidas desde *Fl)iples disposi)i-os. #ar)iendo del *is*o doc%*en)o !"L pode*os 0enerar di/eren)es in)er/aces si*ple*en)e *edian)e la aplicacin de %na !BL di/eren)e. Lo *is*o se p%ede decir a la &ora de re%)ilizar %na aplicacin con in)er/aces di/eren)es por /abrican)e+ idio*a+ na-e0ador $%e accede... 3s)a separacin per*i)e+ ade*s+ la 0eneracin a%)o*)ica de par)e del cdi0o de la aplicacin+ a $%e la par)e *s di/'cil de 0enerar a%)o*)ica*en)e son las in)er/aces de %s%ario en es)e caso la l0ica de ne0ocio es independien)e. Crear ser-icios Web %)ilizando es)a ),cnica es *% sencillo+ a $%e se p%ede re%)ilizar la l0ica de ne0ocio si*ple*en)e *odi/icar la in)er/az+ si*pli/icndola. La separacin en la *e)odolo0'a en)re las di/eren)es /ases del desarrollo /acili)a el )raba5o en e$%ipo la asi0nacin de )areas con re$%eri*ien)os a personas di/eren)es+ /acili)ando el encon)rar /or*ar al personal necesario para a %dar en el desarrollo de aplicaciones (eb.

C%ore <==5

#0. >I

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

Desventa/as. 3n con)ra+ lo $%e s%ele *encionarse sobre es)e )ipo de ),cnicas esG

#roble*as de rendi*ien)o debidos al procesa*ien)o con !BL. Bi bien es cier)o $%e es *s rpido 0enerar direc)a*en)e la in)er/az o %sar o)ro )ipo de plan)illas. T,cnicas co*o la pre6co*pilacin de las &o5as !BL+ la )rans/or*acin de es)as en clases Ja-a+ es)ilo JB# 6T ser-le)+ el+ &abi)%al*en)e+ escaso peso rela)i-o de es)as di/erencias an)e el re)ardo de la red Do el acceso a bases de da)os p%eden *ini*izar el i*pac)o de es)e proble*a. Mo obs)an)e+ &a $%e )ener en c%en)a $%e %na &o5a !BL *al escri)a p%ede in)rod%cir %n re)ardo considerable+ por lo $%e no con-iene desc%idar es)e /ac)or. La creacin de in)er/aces con &o5as !BL exi0e %nos conoci*ien)os di/eren)es a la si*ple edicin de p0inas ET"L. #or o)ro lado+ el es)ado de las &erra*ien)as para la edicin de &o5as !BL+ no de*asiado a*i0ables+ el ca*bio de *en)alidad $%e i*plica !BL+ a $%e no es ET"L pero )a*poco es %n len0%a5e de pro0ra*acin co*o )al+ di/ic%l)an el aprendiza5e de es)as ),cnicas. Debido al p%n)o an)erior+ no s%ele ser posible $%e el diseador 0r/ico *odi/i$%e direc)a*en)e la in)er/az+ a $%e !BL s%ele es)ar /%era de s% rea de conoci*ien)o+ es)o presen)a %n 0ra-e obs)c%lo en 0r%pos de )raba5o donde el diseador &a de poder &acerlo. Bin e*bar0o+ $%iz no sea )an b%ena idea de5ar $%e %n diseador 0r/ico p%eda crear *odi/icar las p0inas (eb+ $%e al /in al cabo son la in)er/az de %s%ario de %na aplicacin+ sea o no (eb+ sin el sopor)e de al0%ien -ersado en el diseo de aplicaciones+ por lo $%e en o)ros 0r%pos de )raba5o+ es)e p%n)o no cons)i)% e %n proble*a. Co*parndola con o)ras *e)odolo0'as (eb+ la des-en)a5a principal $%e noso)ros le encon)ra*os a es)a ),cnica es la /al)a de sopor)e de &erra*ien)as de desarrollo para realizar la cons)r%ccin de la in)er/az. #or o)ro lado+ la can)idad de cdi0o a i*ple*en)ar las di/ic%l)ades de desarrollar aplicaciones basadas en el na-e0ador son co*%nes a )odas las *e)odolo0'as+ no des)acando ni a /a-or ni en con)ra.

C%ore <==5

#0. >5

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

!onclusiones
Tras analizar la *e)odolo0'a )ras *%c&as aplicaciones desarrolladas+ la concl%siones $%e ex)rae*os son bsica*en)e posi)i-as+ con al0%nos p%n)os osc%ros con los $%e + de *o*en)o+ &a $%e con-i-ir. #or %n lado )ene*os $%e el desarrollo de aplicaciones (eb para el na-e0ador sie*pre )iene %n co*ponen)e de pro0ra*acin bas)an)e al)o+ $%e si0ni/ica %n paso a)rs en c%an)o a prod%c)i-idad respec)o a las aplicaciones )radicionales de escri)orio o clien)eDser-idor. Bin e*bar0o+ &as)a $%e las )ecnolo0'as dis)rib%idas los clien)es pesados sean de n%e-o %na al)erna)i-a+ las aplicaciones (eb son al0o con lo $%e debe*os )ra)ar. Den)ro de las aplicaciones (eb+ exis)en %na serie de )areas $%e es ine-i)able realizar+ $%e son el desarrollo de la in)er/az+ $%e s%ele depender bas)an)e de la aplicacin+ el clien)e4+ el desarrollo del *odelo de da)os. A par)ir de a$%'+ exis)en *%l)i)%d de opciones para enlazar a*bos ex)re*os de la aplicacin la %)ilizacin de !"LD!BL es %na ellas+ con s%s -en)a5as s%s incon-enien)es. 3n n%es)ro caso+ las -en)a5as se &an *os)rado s%periores &e*os adap)ado n%es)ra /or*a de )raba5ar *e)odolo0'a a la ar$%i)ec)%ra+ para *axi*izar los bene/icios. 3llo no si0ni/ica+ ob-ia*en)e+ $%e dic&a sol%cin sea aplicable a+ o la *e5or sol%cin para+ c%al$%ier proble*a or0anizacin.+ pero si $%e es %na opcin -iable $%e en n%es)ro caso &a dado b%enos res%l)ados. Lo i*por)an)e+ en )odo caso+ es de/inir clara*en)e $%e ar$%i)ec)%ra *e)odolo0'a %sar e irla e-ol%cionando+ al )ie*po $%e se p%ede experi*en)ar con al)erna)i-as+ pero sin de5arse lle-ar por las con)in%as *odas $%e peridica*en)e aparecen $%e de la *ano del *ar;e)in0+ pro*e)en la re-ol%cin la sol%cin a )odos n%es)ros proble*as.

C%ore <==5

#0. >@

Daniel Lpez Janriz CTI@UIB

Aplicaciones Web con Oracle !"L

0e1erencias
U>V U<V UHV UIV U5V U@V UOV URV U?V Designing $nterprise Applications 2it3 t3e J,$$4M #lat1or'5 Second $dition+ Inder5ee) Bin0&+ Be)& B)earns+ "ar; Jo&nson+ 3n)erprise Tea* + Addison6Wesle #%b Co + IBBM =<=>ORO?=H Designing $nterprise Applications 2it3 t3e J,$$4M #lat1or'5 Second $dition 6%%&%&% Model7.ie27!ontroller Arc3itecture8+ &))pGDD5a-a.s%n.co*D...Dapp6arc&Dapp6arc&<.&)*lD M.#" Model7.ie27#resenter+ Tali0en)+ Inc.+ "i;e #o)el+ /)pGDD(((@.so/)(are.ib*.co*Dso/)(areDde-eloperDlibrar D*-p.pd/ $9tensible Styles3eet Language 6XSL8 .ersion %&:5 W-! 0eco''endation %; October ,::%+ &))pGDD(((.(H.or0DTNDxslD XSL 4rans1or'ations 6XSL48 .ersion %&:5 W-! 0eco''endation %< =ove'ber %>>>+ &))pGDD(((.(H.or0DTNDxsl) XSL4 " #rogra''er?s 0e1erence+ "ic&ael Wa + Wrox + IBBM =O@I5IHR>I $9tensible Mar@up Language 6XML8+ WHC + &))pGDD(((.(H.or0D!"LD $9tensible Mar@up Language 6XML8 %&: 6Second $dition85 W-! 0eco''endation < October ,:::+ &))pGDD(((.(H.or0DTNDN3C6x*l #royecto WebL$A(+ &))psGDD(eblea/.de-.5a-a.ne)D

C%ore <==5

#0. >O

You might also like