Upload
felipe
View
229
Download
0
Embed Size (px)
Citation preview
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 1/56
Treball Fi de Carrera
ENGINYERIA TÈCNICA EN
INFORMÀTICA DE SISTEMES
Facultat de Matemàtiques
!i"ersitat de #arcel$!a
A%&ICACI' (E# %ER GESTIONAR CONTINGTS
M&TIMÈDIA MIT)AN*ANT S%RING I G(T
A!ira Escric+s Mart,!e-
Director: Eloi Puertas i Prats
Realitzat a: Departament de Matemàtica
Aplicada i Anàlisi. UB
Barcelona, 15 de gener de !1"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 2/56
AL MEU PARE
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 3/56
"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 4/56
Índice
1- Introducción..................................................................................................................................5
1.1-Descripción del proyecto....................................................................................................... 6
2-Análisis .........................................................................................................................................
2.1-!"#eti$os del siste%&.............................................................................................................
2.2-'isión (ener&l de l& &r)uitectur&........................................................................................... *
2.+-Actores.................................................................................................................................. *2.,-&sos de uso tetu&les......................................................................................................... /
2.,.1- Usu&rio in$it&do............................................................................................................ /
2.,.2- Usu&rio co%0n............................................................................................................ 1
2.,.+- Usu&rio &d%inistr&dor................................................................................................. 1
+-Ar)uitectur&................................................................................................................................. 12
+.1-Modelo-'ist&-ontrol&dor.................................................................................................... 12
+.1.1- &p&s..........................................................................................................................12
+.2-AA3................................................................................................................................... 1++.+-RE4 - Represent&tion&l 4t&te r&nser .............................................................................15
,-I%ple%ent&ción........................................................................................................................... 1
,.1-Entorno de des&rrollo.......................................................................................................... 1
,.2-'ist&.....................................................................................................................................21
,.2.1- 7r&%e8or9 :;......................................................................................................... 21
,.2.2- 4%&rt:;.................................................................................................................. 21
,.2.+- Prototipo Inter&< Usu&rio ...........................................................................................22
,.2.,-I%ple%ent&ción............................................................................................................ 2,
,.+-ontrol&dor o ló(ic&=%odelo de ne(ocio..............................................................................2
,.+.1- 4prin( M'................................................................................................................. 2
,.+.2- I%ple%ent&ción de los c&sos de uso %ás i%port&ntes............................................... +,
,.,-Modelo................................................................................................................................. +/
,.,.1- Alresco....................................................................................................................... +/
,.,.2- ;e" scripts................................................................................................................. ,
,.,.+- 4ite Alresco................................................................................................................ ,1
,.,.,- In$oc&ción de los c&sos de uso %ás i%port&ntes....................................................... ,+
#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 5/56
5-Aneos........................................................................................................................................ ,
6-onclusiones...............................................................................................................................5+-7uentes....................................................................................................................................... 5,
5
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 6/56
Índice de ilustracionesIlustr&ción 1> &so de uso - Re(istro................................................................................................/
Ilustr&ción 2> &so de uso - Lo(in.................................................................................................. 1
Ilustr&ción +> &so de uso - Do8nlo&d........................................................................................... 1
Ilustr&ción ,> &so de uso - Uplo&d................................................................................................1
Ilustr&ción 5> &so de uso - Delete 7ic?ero.................................................................................... 1
Ilustr&ción 6> &so de uso - Delete User........................................................................................ 11
Ilustr&ción > P&trón M'...............................................................................................................1+
Ilustr&ción *> AA3 @ Motor AA3.................................................................................................. 1,
Ilustr&ción /> AA3 @ 3MLttpRe)uest = ttpResponse................................................................ 15
Ilustr&ción 1> E#e%lo de po%.%l.................................................................................................. 1*
Ilustr&ción 11> 'isu&li<&ción in&l de l&s c&p&s 'ist& y ontrol&dor ............................................... 1/
Ilustr&ción 12> Re(istro de un nue$o socio.................................................................................... 2+
Ilustr&ción 1+> Introducir credenci&les............................................................................................ 2+
Ilustr&ción 1,> D&t&4ource de docu%entos.................................................................................... 25
Ilustr&ción 15> D&t&4ource de Usu&rios......................................................................................... 26
Ilustr&ción 16> 8e".%l.................................................................................................................. 2*
Ilustr&ción 1> &pplic&tionontet.%l........................................................................................... 2/
Ilustr&ción 1*> 4prin( B&nnot&tions............................................................................................... +
Ilustr&ción 1/> o%ponent y deri$&dos.......................................................................................... +1
Ilustr&ción 2> A3-R4 B&nnot&tions............................................................................................ +2
Ilustr&ción 21> E#e%plo 4prin( y ersey..........................................................................................++
Ilustr&ción 22> Ll&%&d& RE4 - Re(istro........................................................................................+,
Ilustr&ción 2+> Ll&%&d& RE4 - Lo(in........................................................................................... +5Ilustr&ción 2,> In$oc&ción 8e" script desde s%&rt:; - Do8nlo&d..............................................+6
Ilustr&ción 25> Ll&%&d& RE4 - Uplo&d..........................................................................................+
Ilustr&ción 26> Ll&%&d& RE4 - Delete User.................................................................................. +*
Ilustr&ción 2> ;e" 4cript M' Alresco....................................................................................... ,
Ilustr&ción 2*> Alresco - 4ite UC.................................................................................................... ,1
Ilustr&ción 2/> Alresco - ontenido c&rpet& Docu%entos.............................................................. ,2
Ilustr&ción +> liente - ontenido c&rpet& Docu%entos desde el :RID de s%&rt:;.................,2
Ilustr&ción +1> I%ple%ent&ción ;e" 4cript Alresco - Re(istro.......................................................,+
$
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 7/56
Ilustr&ción +2> I%ple%ent&ción ;e" 4cript Alresco - Lo(in........................................................... ,,
Ilustr&ción ++> I%ple%ent&ción ;e" 4cript Alresco - Uplo&d.........................................................,5Ilustr&ción +,> I%ple%ent&ción ;e" 4cript Alresco - Delete User................................................ ,6
Ilustr&ción +5> P&nt&ll& Inici&l......................................................................................................... ,
Ilustr&ción +6> 7or%ul&rio de Re(istro y $&lid&ciones.....................................................................,*
Ilustr&ción +> Entr&d& usu&rio ...................................................................................................... ,*
Ilustr&ción +*> Usu&rio desc&r(& contenido ................................................................................... ,/
Ilustr&ción +/> Usu&rio su"e contenido...........................................................................................,/
Ilustr&ción ,> Lo(in Ad%in ........................................................................................................... 5
Ilustr&ción ,1> Ad%in Eli%in&r Usu&rios......................................................................................... 5Ilustr&ción ,2> Ad%in Men0 Eli%in&r Usu&rios............................................................................... 51
Ilustr&ción ,+> Ad%in onir%& Eli%in& Usu&rio............................................................................. 51
Ilustr&ción ,,> Ad%in :rid Usu&rio Eli%in&do.................................................................................52
Ilustr&ción ,5> Ad%in :rid ontenido Eli%in&r............................................................................... 52
%
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 8/56
1- Introducción
o%o r&"&#o de 7in de &rrer& 7 ?e re&li<&do el &nálisisF diseGo e i%ple%ent&ción de un&
&plic&ción 8e" utili<&ndo $&ri&s tecnolo(H&s y un& &r)uitectur& sep&r&d& por c&p&s.
El proyecto consiste en un& &plic&ción &ccesi"le & tr&$s de cu&l)uier redF en l& )ue los usu&rios
pueden co%p&rtir todo tipo de &rc?i$os %ulti%edi& en un& red de co%put&dor&sF y& se& en
Internet o co%o &plic&ción en un& red pri$&d&.
El 7 tiene co%o o"#eti$o re&li<&r un tr&"&#o de sHntesis en el )ue se de"en &port&r los
conoci%ientos &d)uiridos dur&nte l& c&rrer& y )ue re)uiere ponerlos en práctic& con#unt&%ente en
un proyecto concreto. Es un des&rrollo práctico y "ien docu%ent&doF $incul&do &l e#ercicio
proesion&l de l& inor%átic&.
L& elección de est& áre& de tr&"&#o ?& est&do %oti$&d& por $&rios &ctores. Por un l&doF %e ?&
per%itido eperi%ent&r el des&rrollo de un proyecto desde cero utili<&ndo un& %etodolo(H&
ri(uros& y &c&d%ic&. Por otr& p&rteF %e ?& per%itido poner %is conoci%ientos en práctic&
dur&nte %i eperienci& proesion&l co%o des&rroll&dor& en el %undo de l& consultorH&F
(estion&ndo el tie%po de %i propio proyecto.
Uno de los incon$enientes )ue encontr &l inicio de %i eperienci& l&"or&lF er& el de i%ple%ent&r
l& inter&< (ráic& de un& &plic&ciónF y& )ue el &prendi<&#e &c&d%icoF p&só por <o est& p&rte t&n
i%port&nte en el des&rrollo de sot8&re.
Más &del&nte eplic&r )u r&%e8or9 es &conse#&"le p&r& pro(r&%&dores &$& sin
conoci%ientos de ML y 44.
Un& $e< ele(id& el áre&F ?e "usc&do un proyecto )ue pudiese ser des&rroll&do co%plet&%ente en
los tie%pos pre$istos p&r& l& re&li<&ción del 7F con un& estructur& si%il&r & los )ue nos
encontr&%os en un& e%pres& y )ue per%itiese in$esti(&r y &%pli&r dierentes opciones de
i%ple%ent&ción dentro de l& %is%& &r)uitectur&. Es en este conteto donde sur(e l& ide& de
&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 9/56
re&li<&r un& &plic&ción )ue i%ple%ente l& (estión de contenidos %ulti%edi& por $&rios usu&rios
&ccediendo & l& $e< desde cu&l)uier red de orden&dores.
L& princip&l &port&ción del proyecto es "rind&r un& &plic&ción )ue per%it& co%p&rtir &rc?i$os en
cu&l)uier red.
1.1- Descripción del proyecto
Est& &plic&ción tiene por o"#eti$o co%p&rtirF entre l& redF cu&l)uier &rc?i$o %ulti%edi&. P&r& ello se
?& cre&do un& inter&< de usu&rio sencill& y &%i(&"leF un repositorio p&r& el &l%&cen&%iento de
&rc?i$os y un& c&p& con l& ló(ic&-de-ne(ocio.
Al &cceder & l& &plic&ciónF los usu&rios sin i%port&r si se ?&n identiic&do podrán consult&r los
&rc?i$os &(re(&dos. &%"in podrán re&li<&r "0s)ued&s y $er el det&lle del &rc?i$o.
Los usu&rios podrán d&rse de <& en l& &plic&ción co%plet&ndo un or%ul&rio de re(istro
disponi"le en l& 8e". Un& $e< re&li<&do este p&so podránF pre$i& identiic&ciónF desc&r(&r y su"ir
&rc?i$os &l repositorio.
L& &plic&ción tendrá &l %enos un &d%inistr&dor )ue tendrá los per%isos p&r& "orr&r &rc?i$os o
usu&rios de l& &plic&ción.
'
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 10/56
2- Análisis
En este docu%ento se el&"or&n l&s especiic&ciones p&r& l& construcción de los dierentes
ele%entos sot8&re )ue constituyen el 4iste%& 7in&l.
A p&rtir de l& el&"or&ción de est&s especiic&cionesF se &"ord& l& codiic&ción de los co%ponentes.
El propósito del siste%& es cre&r un siste%& de (estión &rc?i$os p&r& poder co%p&rtirlos en l& red
y & l& $e< un& distin(uid& Ar)uitectur& sep&r&d& por c&p&s p&r& des&rroll&dores.
2.1- Objetivos del sistema
Los o"#eti$os )ue se persi(uen t&nto & ni$el de proyecto co%o & ni$el de &plic&ción son>
a nivel de proyecto:
– Distint&s c&p&s de des&rrollo p&r& pro(r&%&dores.
– Utili<&r sot8&re li"re
– 7r&%e8or9s
a nivel de aplicación:
– 7&cilid&d y r&pide< de &cceso & l& docu%ent&ción (ener&d& desde cu&l)uier punto
(eo(ráico.
– Dierentes roles de usu&rio
– Inter&< (ráic& sencill& y &%i(&"le
1!
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 11/56
2.2- Visión general de la arquitectura
P&r& elloF el siste%& est&rá "&s&do en + co%ponentes>
1. Repositorio de docu%ent&ción>
Donde se &l%&cen&rá tod& l& inor%&ción (ener&d&. P&r& el proyecto el repositorio es
Alresco o%%unity Edition $.,..
2. &p& RE4>
Aplic&ción )ue contendrá tod& l& ló(ic& de ne(ocio de l& &plic&ción. 4erá de c&rácter ;e"
4er$ices con tecnolo(H& RE4 &l estilo de un& c&p& de ló(ic& de un& &plic&ción distri"uid&F
tiene por o"#eti$o enc&psul&r l&s uncion&lid&des de &cceso & Alresco en or%& de
ser$icios 8e". :r&ci&s & est& c&p& se si%pliic&rá el &cceso &l repositorio AlrescoF
pudiendo otr&s &plic&ciones utili<&rl&. Est& c&p& será des&rroll&d& "&#o el 7r&%e8or9
4prin(.
+. Inter&< (ráic&>
Aplic&ción result&nte desde donde se podrán (estion&r los dierentes &rc?i$os. Est&
&plic&ción se des&rroll&rá con tecnolo(H& :;
En el si(uiente &p&rt&do &$&n<&re%os en el &nálisis del pro"le%& propuestoF descri"iendo los&ctores y los c&sos de uso %ás i%port&ntes. &%"in se present&rá un prototipo del sitio 8e" &
des&rroll&r.
2.3- Actores
4e cit&n los &ctores )ue inter&ct0&n con l& &plic&ción>
11
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 12/56
– In$it&do>
4on &)uellos usu&rios )ue consult&n el c&tálo(o sin identiic&rse pre$i&%ente. Pueden
consult&r el %&teri&l disponi"le pero no pueden desc&r(&r o su"ir &rc?i$os &l repositorio.
– Usu&rio o%0n>
Este tipo de usu&riosF &l i(u&l )ue los in$it&dos Fpueden consult&r el repositorio de
&rc?i$os. Pero & dierenci& de estosF están ?&"ilit&dosF pre$i& identiic&ciónF p&r&
desc&r(&r o su"ir &rc?i$os &l repositorio.
– Ad%inistr&dor>
4on usu&rios con per%isos especi&les )ue per%iten (estion&r el repositorio con pri$ile(ios
%&yores. Per%ite eli%in&r &rc?i$os y usu&rios.
2.4- Casos de uso tetuales
De l& descripción del proyecto pode%os identiic&r los si(uientes c&sos de uso y sus respecti$os
usu&rios.
2.4.1- Usuario invitado
Jo%"re Re(istro
Descripción r&s rellen&r un or%ul&rioF un usu&rio se d& de <& en l&
&plic&ción.
Ilustr&ción 1> &so de uso - Re(istro
2.4.2- Usuario común
1
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 13/56
Jo%"re lo(in
Descripción Al introducir no%"re de usu&rio y p&ss8ordF el usu&rio se lo(&en l& &plic&ción.
Ilustr&ción 2> &so de uso - Lo(in
Jo%"re do8nlo&d
Descripción 4i el usu&rio y& está lo(&do en l& &plic&ción puede desc&r(&r
&rc?i$os %ulti%edi& del repositorio
Ilustr&ción +> &so de uso - Do8nlo&d
Jo%"re uplo&d
Descripción 4i el usu&rio y& está lo(&do en l& &plic&ción puede su"ir
&rc?i$os %ulti%edi& &l repositorio
Ilustr&ción ,> &so de uso - Uplo&d
2.4.3- Usuario administrador
Jo%"re delete7ic?ero
Descripción Eli%in& un ic?ero de Alresco. o%prue"& pre$i&%enteF )ue el
usu&rio se& el Ad%inistr&dor.
Ilustr&ción 5> &so de uso - Delete 7ic?ero
Jo%"re deleteUser
Descripción Eli%in& un usu&rio del respositorio. o%prue"& pre$i&%enteF
)ue el usu&rio se& el Ad%inistr&dor.
Ilustr&ción 6> &so de uso - Delete User
1"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 14/56
3- Aruitectura
Despus de un cuid&doso &nálisis de los o"#eti$os del proyectoF se deter%inó )ue l& %e#or
%&ner& de estructur&r el siste%& er& ?&ciendo uso del %uy &%oso Kp&trón de diseGo> Model-
View-Controller )ue se represent& co%o un& &r)uitectur& de + ni$eles.
En este punto se $& & det&ll&r &)uell& p&rte de l& Ar)uitectur& del 4iste%& rel&ti$& & los
co%ponentes sot8&re des&rroll&dos con o"#eto de per%itir el &cceso &l siste%& y l& s&tis&cción
de todos los re)uisitos.
!.1- "odelo-Vista-Controlador
MVC por sus si(l&s en in(ls es un p&trón de diseGo de &r)uitectur& de sot8&re us&do
princip&l%ente en &plic&ciones )ue %&ne#&n (r&n c&ntid&d de d&tos y tr&ns&cciones co%ple#&s
donde se re)uiere un& %e#or sep&r&ción de conceptos p&r& )ue el des&rrollo est estructur&do de
un& %e#or %&ner&F &cilit&ndo l& pro(r&%&ción en dierentes c&p&s de %&ner& p&r&lel& eindependiente. MVC su(iere l& sep&r&ción del sot8&re en + c&p&s> ModeloF 'ist& y ontrol&dor.
4i un& %is%& &plic&ción de"e e#ecut&rse t&nto en un n&$e(&dor estánd&r co%o un n&$e(&dor de
un dispositi$o %ó$ilF sol&%ente es neces&rio cre&r un& $ist& nue$& p&r& c&d& dispositi$o
%&nteniendo el control&dor y el %odelo ori(in&l de est& %&ner& se consi(ue un %&nteni%iento
%ás sencillo de l&s &plic&ciones.
3.1.1- !apas"odelo: Es l& represent&ción de l& inor%&ción )ue %&ne#& l& &plic&ción. El %odelo en sH
son los d&tos puros )ue puestos en conteto del siste%& pro$een de inor%&ción &l usu&rio o & l&
&plic&ción %is%&.
#ista: Es l& represent&ción del %odelo en or%& (ráic& disponi"le p&r& l& inter&cción con
el usu&rio. En el c&so de un& &plic&ción ;e"F l& K'ist& es un& pá(in& ML con contenido
diná%ico so"re el cuál el usu&rio puede re&li<&r oper&ciones.
!ontrolador: Es l& c&p& enc&r(&d& de %&ne#&r y responder l&s solicitudes del usu&rioF
1#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 15/56
proces&ndo l& inor%&ción neces&ri& y %odiic&ndo el Modelo en c&so de ser neces&rio.
Ilustr&ción > P&trón M'
L& c&p& #ista será des&rroll&d& con el r&%e8or9 $%& )ue ?&ce uso de l& tcnic& A'A( se
eplic& en el si(uiente punto p&r& l& cre&ción de &plic&ciones 8e" &sHncron&s. Est& c&p&F en$H&
peticiones P &l !ontrolador) el cu&l c&ptur& l& petición & tr&$s de un& ll&%&d& *+,&
t&%"in será %encion&d& en este c&pHtulo. El "odelo será puesF l& c&p& enc&r(&d& de l&
persistenci&.
3.2- A'A( Asyncronous 'ava,cript y ("
AA3 Async?ronous &$&4cript y 3ML. Jo es un nue$o len(u&#e de pro(r&%&ciónF sino un&
nue$& or%& de utili<&r l&s nor%&s eistentes. onsiste en un& tcnic& p&r& l& cre&ción de
pá(in&s 8e" de or%& rápid& y diná%ic&. Per%ite )ue l&s pá(in&s 8e" se &ctu&licen de or%&
&sincrónic& %edi&nte el interc&%"io de pe)ueG&s c&ntid&des de d&tos con el ser$idor en se(undo
pl&no. Esto si(niic& )ue es posi"le &ctu&li<&r p&rtes de un& pá(in& 8e"F sin $ol$er & c&r(&r l&
pá(in& enter&. L&s pá(in&s 8e" )ue no utili<&n AA3 de"en $ol$er & c&r(&r tod& l& pá(in& si elcontenido c&%"i&r.
Aplic&ciones co%o :oo(le M&psF :%&ilF Noutu"eF 7&ce"oo9F son un e#e%plo de tecnolo(H& AA3.
/stas se e0ecutan en el clienteF es decirF en el n&$e(&dor y %&ntiene co%unic&ción &sHncron&
con el ser$idor en se(undo pl&no. De est& or%& es posi"le re&li<&r c&%"ios so"re l& %is%&
pá(in& sin necesid&d de rec&r(&rl&. Esto si(niic& &u%ent&r l& inter&cti$id&dF $elocid&d y
us&"ilid&d en l& %is%&.
AA3 es l& co%"in&ción de>
15
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 16/56
– o#&s de estilos en c&sc&d& 44 p&r& el diseGo )ue &co%p&G& & l& inor%&ción.
– Docu%ent !"#ect Model D!M &ccedido (ener&l%ente %edi&nte &$&scriptF p&r& %ostr&r
e inter&ctu&r diná%ic&%ente con l& inor%&ción present&d&.
– El o"#eto 3MLttpRe)uest p&r& interc&%"i&r d&tos &sHncron&%ente con el ser$idor 8e".
– 3ML es el or%&to us&do co%0n%ente p&r& l& tr&nserenci& entre el ser$idor y el clienteF
sin e%"&r(oF puede us&rse cu&l)uier or%&toF t&les co%o> teto pl&noF ML y 4!J.
En l& si(uiente i%&(en se %uestr& co%o tr&"&#& todo en con#unto>
Ilustr&ción *> AA3 @ Motor AA3
!reando una petición al servidor con ("ttp*euest
En el (ráico pode%os &preci&r co%o el cliente en$H& peticiones 3MLttpRe)uest y el lu#o de
d&tos.
1$
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 17/56
Ilustr&ción /> AA3 @ 3MLttpRe)uest = ttpResponse
("ttp*euest es un& inter&< e%ple&d& p&r& re&li<&r peticiones P y P4 & ser$idores
;e". P&r& los d&tos tr&nseridos se us& cu&l)uier codiic&ción "&s&d& en tetoF incluyendo> teto
pl&noF 3MLF 4!JF ML y codiic&ciones p&rticul&res especHic&s. L& inter&< se i%ple%ent&
co%o un& cl&se de l& )ue un& &plic&ción cliente puede (ener&r t&nt&s inst&nci&s co%o necesite
p&r& %&ne#&r el diálo(o con el ser$idorF ste proces& l& petición & tr&$s de un& ll&%&d& RE4
cre&ndo un& respuest& ttp*esponse y retornándol& &l cliente )ue reresc&rá l& pá(in& us&ndo
&$&script. A continu&ción se %encion& l& &r)uitectur& REST )ue ?& sido utili<&d& en el ser$idor
de &plic&ciones.
!.!- #$%& - #epresentational %tate &rans'er
L& &ranserencia de +stado *epresentacional Represent&tion&l 4t&te r&nser o *+,& es un
estilo de &r)uitectur& de sot8&re p&r& siste%&s distri"uidos co%o l& ;orld ;ide ;e". RE4 se
?& con$ertido en un %odelo de diseGo ;e" predo%in&nte. 7ue introducido y deinido en 2 por
Roy 7ieldin( en su tesis doctor&l. 7ieldin( es uno de los &utores princip&les del Protocolo de
tr&nserenci& de ?iperteto P. Los siste%&s )ue si(uen los principios RE4 se ll&%&n con
recuenci& RE4ul.
Principios de &r)uitectur& y diseGos und&%ent&les cl&$e>
1%
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 18/56
– Un protocolo clienteservidor sin estado> c&d& %ens&#e P contiene tod& l&
inor%&ción neces&ri& p&r& co%prender l& petición. o%o result&doF ni el cliente ni elser$idor necesit&n record&r nin(0n est&do de l&s co%unic&ciones entre %ens&#es. 4in
e%"&r(oF en l& práctic&F %uc?&s &plic&ciones "&s&d&s en P utili<&n coo9ies y otros
%ec&nis%os p&r& %&ntener el est&do de l& sesión.
– Un con#unto de operaciones ien deinidas )ue se &plic&n & todos los recursos de
inor%&ción> P en sH deine un con#unto pe)ueGo de oper&cionesF l&s %ás i%port&ntes
son P!4F :EF PU y DELEE. on recuenci& est&s oper&ciones se e)uip&r&n & l&s
oper&ciones RUD )ue se re)uieren p&r& l& persistenci& de d&tos.
– Un& sinta5is universal p&r& identiic&r los recursos. En un siste%& RE4F c&d& recurso es
direccion&"le 0nic&%ente & tr&$s de su URI. El uso de ?iper%ediosF t&nto p&r& l&
inor%&ción de l& &plic&ción co%o p&r& l&s tr&nsiciones de est&do de l& &plic&ción> l&
represent&ción de este est&do en un siste%& RE4 son tHpic&%ente MLF 3ML o 4!J.
o%o result&do de estoF es posi"le n&$e(&r de un recurso RE4 & %uc?os otrosF
si%ple%ente si(uiendo enl&ces sin re)uerir el uso de re(istros u otr& inr&estructur&
&dicion&l.
Un& $e< deinid& l& &r)uitectur& del siste%& M'F us&ndo l& tcnic& AA3 p&r& l& p&rte cliente F
co%unicándose con el ser$idor & tr&$s de ll&%&d&s RE4 se eplic& en el si(uiente c&pHtulo )u
?err&%ient&s son neces&ri&s p&r& co%en<&r & construir el siste%&.
1&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 19/56
4- ImplementaciónEn este c&pHtulo se eplic& %ás det&ll&d&%ente )u sot8&re se ?& utili<&do en est& &r)uitectur& y
có%o e%pe<&r & construir un siste%& ácil de %&ntener.
El proyecto se ?& re&li<&do 0nic& y eclusi$&%ente con sot8&re li"re.
4e ?&n us&do distint&s tecnolo(H&s p&r& c&d& un& de l&s c&p&s de l& &plic&ción. Este c&pHtulo está
co%puesto de , p&rtes. 4e descri"e có%o e%pe<&r & prep&r&r el entorno de des&rrollo y se ?&ce
un& eplic&ción %ás e?&usti$& del sot8&re us&do en c&d& c&p& p&r& l& &r)uitectur& M' en el
des&rrollo del proyecto descri"iendo l&s ?err&%ient&s o r&%e8or9s us&dos en c&d& un& de ell&s.
Se muestra la implementación de los casos de uso más importantes en cada capa, de modo que
la aplicación desarrollada es completamente funcional y cumple con todos los requisitos
especificados al inicio del proyecto.
4e d& por ?ec?o )ue l& inst&l&ción es correct& de inicio con el sot8&re neces&rio p&r& construir el
siste%& in&l.
4.1- $ntorno de desarrollo
En pri%er lu(&r de"e%os esco(er un entorno p&r& des&rroll&r nuestro códi(o. Eclipse es
un entorno de des&rrollo inte(r&do de códi(o &"ierto %ultipl&t&or%&. Est& pl&t&or%& ?& sido
us&d& p&r& des&rroll&r entornos de des&rrollo inte(r&dos del in(ls IDE.
En el proyecto se ?& us&do Eclipse Indi(o con los si(uentes plu(ins>
– e $oo6le 7lu6in or +clipse.
Este pu(lin se eplic&rá co%o p&rte de l& c&p& 'ist&.
– %e &ools 7latorm 8%&79 7ro0ect - +clipse
Inst&l&ndo este plu(in o"tene%os el ser$idor 8e" o%c&t en el )ue tendre%os &lo#&do
nuestro proyecto 8e".
– "2+ - "aven Inte6ration or +clipse
1'
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 20/56
M&$en será us&do co%o ?err&%ient& p&r& construir el proyecto &$&. Utili<& un P!M
Pro#ect !"#ect Model p&r& coni(ur&r el proyecto y (estion&r dependenci&s de otros%ódulos esto esF si es neces&ri& cu&l)uier li"rerH&F se de"e escri"ir en el P!M y M&$enF
&uto%átic&%ente desc&r(&rá l&s dependenci&s en un directorio de nuestro proyecto.
M&$en nos &yud& & co%pil&r l&s cl&ses .#&$&F per%ite e#ecut&r test &uto%áticos de unitF
(ener& ic?eros .#&r o .8&r con un si%ple Maven Install, etc.
Ilustración 10: Ejelo de !o."l
Desde eclipse de"e%os construir con el plu(in de M&$en un Je8 M&$en Pro#ectF eisten $&rios
!
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 21/56
oros p&r& l& cre&ción y coni(ur&ción del proyecto.
Los si(uientes r&%e8or9s y tecnolo(H&s se eplic&n & continu&ción y en )ue c&p& del p&trón M'
se ?& us&do c&d& uno de ellos p&r& construir el siste%& in&l.
– "odelo> Alresco co%%unity ,.
– #ista> :;F s%&rt:;.
– !ontrolador > 4prin(
L& si(uiente i%&(en %uestr& có%o ?&n sido sep&r&d&s l& 'ist& y el ontrol&dor en el proyecto>
Ilustr&ción 11> 'isu&li<&ción in&l de l&s c&p&s 'ist& y ontrol&dor
El l& ilustr&ción 1 $e%os el !ac#a$e (8t.client el cu&l contiene otros p&c9&(e con l&s cl&ses &$&
)ue i%ple%ent&n el códi(o us&ndo AA3 &p&rt&do ,.2- 'ist& .
En el !ac#a$e pro#ectRE4 encontr&%os l&s cl&ses &$& )ue construyen el ser$idor %edi&nte el
r&%e8or9 4prin( &p&rt&do ,.+- ontrol&dor o ló(ic&=%odelo de ne(ocio.
1
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 22/56
4.2- Vista
L& c&p& del cliente es donde se consu%en y present&n los %odelos de d&tos. P&r& un& &plic&ción
;e"F l& c&p& cliente nor%&l%ente es un n&$e(&dor 8e".
El diseGo del l&do del cliente utili<& un& &r)uitectur& Modelo-'ist&-Present&dor M'P. L& princip&l
$ent&#& de este p&trón p&r& el proyecto es l& c&p&cid&d de &cilit&r y %ini%i<&r el &co%pl&%iento
de co%ponentes UI )ue son des&rroll&dos independiente%ente.
L&s p&nt&ll&s son secciones $isu&les de l& &plic&ción. 4ólo un& p&nt&ll& puede ser $isi"le & l& $e<
y c&si se puede consider&r 0nic&s en un& sol& pá(in& 8e"-&pp.
&d& p&nt&ll& (estion& l& cre&ciónF l& unión y l& $isu&li<&ción de los co%ponentes de inter&< de
usu&rio dierentes )ue re)uiere. &d& co%ponente de l& inter&< de usu&rio no es %ás )ue un
present&dor y su o"#eto $ist& correspondiente. L& co%unic&ción entre los co%ponentes de inter&<
de usu&rio en un& p&nt&ll& se %&ne#& & tr&$s de l& E$entCusF esto per%ite el &copl&%iento
lei"le. u&ndo un present&dor de d&tos re)uiere )ue lo solicite de or%& &sHncron& desde un
D&t&4er$ice co%p&rtid&. El D&t&4er$ice opcion&l%ente puede de$ol$er los d&tos de un& %e%ori&c&c? del l&do del clienteF o si%ple%ente ll&%&r direct&%ente &l servicio de GWT RPC en el
servidor.
4.2.1- rame;or< $%&
P&r& el des&rrollo de l& $ist& se ?& us&do :; o :oo(le ;e" ool9it. Es un r&%e8or9 cre&do por
:oo(le )ue per%ite ocult&r l& co%ple#id&d de $&rios &spectos de l& tecnolo(H& AA3. Es
co%p&ti"le con $&rios n&$e(&dores. El códi(o es cre&do en &$& y el co%pil&dor se enc&r(& de
tr&ducirlo & ML y &$&4cript.
4.2.2- ,mart$%&
4%&rt:; es un& API )ue per%ite desde :; utili<&r l& li"rerH& AA3 4%&rtlient. Está
co%puest& por un con#unto de co%ponentes c&lend&riosF ár"oles de n&$e(&ciónF (rids... )ue
per%iten conect&r &plic&ciones construid&s con el ser$idorF utili<&ndoF por e#e%ploF ser$icios
RE4.
L& &plic&ción )ue se construirá utili<&rá l& $ersión 4%&rt:; +. con l& $ersión (r&tuit&F l&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 23/56
$ersión de l& li"rerH& :; utili<&d& es 2.,.
P&r& des&rroll&r con este 7r&%e8or9 es neces&rio inst&l&rse un plu(in en el n&$e(&dor.
4.2.3- 7rototipo Intera= Usuario
4e dese& des&rroll&r un& &plic&ción 8e" con un& sencill& inter&< de usu&rio. A continu&ción se
present& un prototipo de l&s princip&les p&nt&ll&s del siste%&F pudiendo $&ri&r en l&s distint&s
&ses de diseGo e i%ple%ent&ciónF incorpor&ndo %e#or&s en l& us&"ilid&d y esttic&.
Este prototipo no pretende ser un& present&ción e?&usti$& de tod&s l&s p&nt&ll&s de l&
&plic&ciónF sino per%itir )ue en est& &se de l& construcción del proyectoF pod&%os tener un&
pri%er& &proi%&ción & lo )ue será el &specto $isu&l del proyecto un& $e< in&li<&do.
"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 24/56
*e6istro de nuevo socio:
Ilustr&ción 12> Re(istro de un nue$o socio
Coneión al sistema(
Ilustr&ción 1+> Introducir credenci&les
#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 25/56
4.2.4-Implementación
iertos co%ponentes s%&rt:; son enl&<&"les & uentes de d&tosF )ue proporcion&n su
estructur& y contenido. Los si(uientes co%ponentes $isu&les están diseG&dos p&r& $isu&li<&rF
consult&r y edit&r d&tos estructur&dos>
>ata,ource
Los o"#etos D&t&4ource proporcion&n un& present&ción independienteF independiente de l&
i%ple%ent&ción de un con#unto de c&%pos de d&tos persistentes. Los D&t&4ources per%iten>
– o%p&rtir %odelos de d&tos & tr&$s de %0ltiples &plic&ciones y co%ponentesF en el
cliente y ser$idor.
– Mostr&rF %&nipul&r d&tos persistentes y %odelo de d&tos rel&ciones t&les co%o p&dres e
?i#os & tr&$s de co%ponentes $isu&les co%o ree:rid.
– E#ecut&r l&s oper&ciones de d&tos est&nd&ri<&d&s "usc&rF orden&rF &(re(&rF &ctu&li<&rF
eli%in&r con un& unción de &poyo t&nto en el cliente y co%o en el ser$idor p&r& escri"ir
d&tosF $&lid&doresF p&(in&ciónF cl&$es 0nic&s y %ás.
– Eplot&ción &uto%&ti<&d& )ue incluye l& c&r(& de d&tosF &l%&cen&%iento en c&c?F
iltr&doF cl&siic&ciónF loc&li<&ción y $&lid&ción.
– Un descriptor de D&t&4ource proporcion& los &tri"utos de un con#unto de c&%pos
D&t&4ource. Los descriptores D&t&4ource se pueden especiic&r en or%&to 3ML o 4!J
cre&do en códi(o &$&. El or%&to se interpret& y es co%p&rtido por el cliente y el ser$idorF
%ientr&s )ue los D&t&4ources cre&dos en &$& son utili<&dos 0nic&%ente por el cliente.
&y cu&tro re(l&s "ásic&s p&r& l& cre&ción de d&tos 3ML o 4!J>
1. Especiic&r un ori(en de d&tos co%o 0nico &tri"uto ID. El ID se utili<& p&r& enl&<&r & los
co%ponentes $isu&lesF y co%o un no%"re predeter%in&do p&r& o"#etos rel&cion&les.
2. Especiic&r un ele%ento de c&%po con un no%"re 0nico 0nico en el ori(en de d&tos p&r&
c&d& c&%po )ue se utili<& en un co%ponente de inter&< de enl&ce de d&tos.
+. Especiic&r un tipo de &tri"uto p&r& c&d& ele%ento del c&%po.
5
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 26/56
,. M&rc&r e&ct&%ente un c&%po con pri%&ryOey QtrueQ. El c&%po pri%&ryOey de"e tener
un $&lor 0nico p&r& c&d& o"#eto de d&tos re(istro en un D&t&4ource. Un c&%popri%&ryOey no es neces&rio p&r& l& lectur& de los D&t&4ourcesF pero es un& "uen&
práctic&F en (ener&lF p&r& &ctu&li<&r o eli%in&r d&tos con sus correspondientes
oper&ciones.
>ata,ource >ocumentos
El si(uiente D&t&4ource ?& sido i%ple%ent&do p&r& %ostr&r el :rid (ener&l.
Ilustr&ción 1,> D&t&4ource de docu%entos
$
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 27/56
>ata,ource Usuarios
D&t&4ource usu&rios i%ple%ent&do p&r& el c&so de uso> KAd%in> eli%in& usu&rio.
Ilustr&ción 15> D&t&4ource de Usu&rios
%
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 28/56
4.!- Controlador o lógica)modelo de negocio.L& Ló(ic& de Je(ocio es un tr%ino inor%&l p&r& reerirse & l& c&p& inter%edi& )ue %&ne#& el
interc&%"io de inor%&ción entre l& 'ist& y el Modelo es decirF el ontrol&dor. 4in e%"&r(oF en
este proyecto se deine l& Ló(ic& de Je(ocio co%o un tr%ino )ue no en(lo"& l& tr&nserenci& de
inor%&ción entre c&p&sF sino & l& ló(ic& &plic&ti$& )ue per%ite el correcto uncion&%iento del
siste%&. L& Ló(ic& de Je(ociosF en tr%inos sencillosF es el con#unto de &l(orit%os )ue re&li<&n
el tr&"&#o )ue el usu&rio dese& e#ecut&r. En el proyecto se ?& des&rroll&do con el 7r&%e8or9
4prin(F & continu&ción se cit&n l&s princip&les c&r&cterHstic&s y sus "eneicios cl&$e.
4.3.1- ,prin6 "#!
El 7r&%e8or9 ;e" M' %odelo-$ist&-control&dor de 4prin( está diseG&do &lrededor de un
4er$let Disp&tc?er4er$let enc&r(&do de en$i&r l&s peticiones & los dierentes %&ne#&dores
?&ndlers de l& &plic&ciónF & p&rtir de l& coni(ur&ción del %&peoF es decirF &l coni(ur&r este
ser$let en el ic?ero 8e".%l tod&s l&s peticiones p&s&rán por l y se enc&r(&rá de rediri(ir & los
dierentes %&ne#&dores. Los %&ne#&dores por deecto se "&s&n en l&s ¬&ciones Bontroller y
BRe)uestM&ppin( )ue $ere%os & continu&ción.
4prin( 7r&%e8or9 es un contenedor de o"#ectos "&s&ndo en el p&r&di(%& Kin$ersión del control o
Kinyección de dependenci&s )ue será %ás det&ll&do en l& p&rte del AD.
4e eplic&n sus c&r&cterHstic&s princip&lesF sus "eneicios cl&$eF l& coni(ur&ción inici&l p&r&
co%en<&r el proyecto con 4prin( y ¬&ciones )ue &cilit&n l& pro(r&%&ción EE.
,ervlet >ispatcer
El r&%e8or9 M' de 4prin( está diseG&do &lrededor de un ser$let )ue reen$H& l&s peticiones &
los dierentes control&dores. Este ser$let está plen&%ente inte(r&do con el contenedor
Io In$ersion o ontrol lo )ue per%ite us&r tod&s l&s c&r&cterHstic&s del r&%e8or9 4prin(.
El ,ervlet >ispatcer es un ser$let )ue ?ered& de l& cl&se "&se ttp4er$let y se de"e decl&r&r
en el ic?ero de coni(ur&ción 8e".%l de l& &plic&ción 8e"F en l& si(uiente i%&(en se %uestr& l&
coni(ur&ción del 8e".%l de nuestro proyecto 4prin(>
&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 29/56
Ilustr&ción 16> 8e".%l
En l& ilustr&ción 1+F t&l co%o se puede $er en el %&peo del ser$let %servlet-a!!in$&'F tod&s l&s
peticiones )ue e%piecen por rest url-!attern' serán %&ne#&d&s por el Disp&tc?er4er$let.
!ontroladores
Los control&dores pro$een &cceso &l co%port&%iento de l& &plic&ciónF interpret&n los inputs del
usu&rio y los tr&nsor%&n en un %odelo )ue es represent&do &l usu&rio por un& $ist& %odelo-
$ist&-control&dor.
'
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 30/56
!oni6uración
4prin( se coni(ur& & p&rtir del a!!licationConte"t."l. El Applic&tionontet es un& inter&< )ue
proporcion& inor%&ción de coni(ur&ción & l& &plic&ción. &y $&ri&s cl&ses proporcion&d&s por
4prin( 7r&%e8or9 )ue i%ple%ent&n est& inter&< y nos &yud& & utili<&r l& coni(ur&ción de l&
&plic&ción. En l& si(uiente ilustr&ción se %uestr& el &pplic&tionontet del proyecto.
Ilustr&ción 1> &pplic&tionontet.%l
"!
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 31/56
'++ Annotations - ?annotations
A p&rtir l& $ersión +.F 4prin( introdu#o el %odelo de pro(r&%&ción "&s&do en ¬&ciones
En este proyecto se ?& pro(r&%&do %edi&nte ¬&ciones p&r& %ini%i<&r l& coni(ur&ción del
códi(o. 'ere%os l&s ¬&ciones us&d&s y l&s ¬&ciones %ás recuente p&r& &cilit&r l&
pro(r&%&ción EE.
L&s ¬&ciones utili<&d&s dur&nte el proyecto se di$iden en dos "lo)ues>
– ¬&ciones 4prin(
– ¬&ciones RE4ul ;e" 4er$ice @ A3-R4.
Anotaciones ,prin6
En l& si(uiente t&"l& $e%os &l(un&s de l&s ¬&ciones us&d&s en el proyecto con 4prin( y sus
i%ports>
Anotacion 7ac<a6e Import
Bo%ponent i%port or(.sprin(r&%e8or9.stereotype.o%ponent
Bontroller i%port or(.sprin(r&%e8or9.stereotype.ontroller
B4er$ice i%port or(.sprin(r&%e8or9.stereotype.4er$ice
BRepository i%port or(.sprin(r&%e8or9.stereotype.Repository
BAuto8ired i%port or(.sprin(r&%e8or9."e&ns.&ctory.&nnot&tion.Auto8ired
B4cope i%port or(.sprin(r&%e8or9.contet.&nnot&tion.4cope
Ilustr&ción 1*> 4prin( B&nnot&tions
?!omponent es el estereotipo princip&lF indic& )ue l& cl&se ¬&d& es un co%ponent o Ce&n
de 4prin( y será c&r(&do en el conteto de l& &plic&ción.
?*epository) ?,ervice y ?!ontroller son especi&li<&ciones de ?!omponent p&r& c&sos
concretos persistenci&F ser$icios y present&ción. Esto si(niic& )ue puede us&rse sie%pre
?!omponent pero lo &decu&do es us&r sus estereotipos.
"1
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 32/56
En l& si(uiente i%&(en se %uestr& l& rel&ción entre ellos>
Ilustr&ción 1/> o%ponent y deri$&dos
?Auto;ired
sir$e p&r& inyect&r &uto%átic&%ente l& dependenci& &l cre&r el co%ponente.
?,cope
ene%os l& opción de decl&r&r un scope p&r& c&d& "e&n.
Por de&ultF los "e&ns en 4prin( son 4in(letons. Un sin(leton es un p&trón de diseGo con el )ue
se &se(ur& )ue solo ?&y un& inst&nci& de un "e&n en nuestr& &plic&ción. Esto nor%&l%ente se
lo(r& ?&ciendo )ue el constructor de l& cl&se se& pri$&do y proporcion&ndo un %todo estático de
á"ric& )ue se enc&r(& de control&r )ue solo ?&y& un& inst&nci& de l& cl&se. Eisten 5 tipos de
coni(ur&ción B4cope )ue serán eplic&dos en el AD.
"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 33/56
*+,&ul %e ,ervice - 'A(-*, Annotations
ersey es un& API &$& p&r& ser$icios 8e" RE4 "&s&d& en ¬&ciones. 7&cilit& el des&rrollo de
8e" ser$ices.
Proporcion& soporte p&r& Ato%s 3ML or%&tF MIME MultiP&rt %ess&(e or%&t F &$&4cript !"#ect
Jot&tion 4!J entre otros.
Anotación 7ac<a6e Import
B:E i%port #&$&.8s.rs.:E
BProduces i%port #&$&.8s.rs.Produces
BP&t? i%port #&$&.8s.rs.P&t?
BSueryP&r&% i%port #&$&.8s.rs.SueryP&r&%
BP!4 i%port #&$&.8s.rs.P!4
Bonsu%es i%port #&$&.8s.rs.onsu%es
B7or%P&r&% i%port #&$&.8s.rs.7or%P&r&%
BPU i%port #&$&.8s.rs.PU
BDELEE i%port #&$&.8s.rs.DELEE
Ilustr&ción 2> A3-R4 B&nnot&tions
&d& recurso es ll&%&do 7@'@ Pl&in !ld &$& !"#ect están ¬&dos por su ?7at el cu&l
desi(n& l& u"ic&ción del recurso. 4e de"e decl&r&r )ue tipo de oper&ción $& & e#ecut&rF co%o
?$+&) ?7@,&) ?>++&+) ?7U&. 4i es neces&rioF se de"e decl&r&r )ue tipo de d&tos produce
?7roduces o consu%e ?!onsumes )ue son especiic&dos con el $&lor MIME type.
""
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 34/56
En el e#e%plo de códi(o si(uiente es un e#e%plo %uy si%ple de un recurso utili<&ndo ¬&ciones
sprin( con ¬&ciones A3-R4 .
Ilustr&ción 21> E#e%plo 4prin( y ersey
"#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 35/56
4.3.2- Implementación de los casos de uso más importantes
A continu&ción se %uestr&n los %todos i%ple%ent&dos en el %odelo de los distintos usu&rios.
– Usu&rio in$it&do> El usu&rio in$it&doF tr&s rellen&r un or%ul&rioF se d& de <& en l&
&plic&ción.
URI ?ttp>==loc&l?ost>/*=pro#ectUC=rest=users=ne8User=
P&c9&(e co%.u".pro#ectRE4.rest
l&se Lo(in;e"4er$ice.#&$&
Mtodo - ne8User
!per&ción P!4
Ilustr&ción 22> Ll&%&d& RE4 - Re(istro
"5
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 36/56
– Usu&rio co%0n>
lo(in introducir no%"re de usu&rio y p&ss8ordF el usu&rio se lo(& en l& &plic&ción.
URI ?ttp>==loc&l?ost>/*=pro#ectUC=rest=users=(etic9et=
P&c9&(e co%.u".pro#ectRE4.rest
l&se Lo(in;e"4er$ice.#&$&
Mtodo - (etUseric9et
!per&ción :E
Ilustr&ción 2+> Ll&%&d& RE4 - Lo(in
"$
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 37/56
Do8nlo&d> 4i el usu&rio y& está lo(&do en l& &plic&ción puede desc&r(&r &rc?i$os %ulti%edi&
del repositorio.
P&r& %ostr&rF )ue se puede ll&%&r direct&%ente &l repositorio de Alresco y& )ue es un M' el
8e" script se in$oc& direct&%ente desde l& c&p& de s%&rt:;.
Ilustr&ción 2,> In$oc&ción 8e" script desde s%&rt:; - Do8nlo&d
"%
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 38/56
– Usu&rio co%0n> 4i el usu&rio y& está lo(&do en l& &plic&ción puede su"ir &rc?i$os
%ulti%edi& &l repositorio.
URI ?ttp>==loc&l?ost>/*=pro#ectUC=rest=ile=uplo&d
P&c9&(e co%.u".pro#ectRE4.rest
l&se 7ile;e"4er$ice.#&$&
Mtodo - iler&nserIn$iteMultiP&rt
!per&ción P!4
Ilustr&ción 25> Ll&%&d& RE4 - Uplo&d
"&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 39/56
– Usu&rio &d%inistr&dor> deleteUser
Tnic&%ente el &d%inistr&dor tiene per%isos p&r& eli%in& un usu&rio del repositorio. El
si(uiente %todo de"e eli%in&r un usu&rio co%pro"&ndo pre$i&%ente )ue el usu&rio )ue
?&ce l& &cción es el Ad%inistr&dor.
URI ?ttp>==loc&l?ost>/*=pro#ectUC=rest=users=deleteUserusern&%eVW
P&c9&(e co%.u".pro#ectRE4.rest
l&se Users;e"4er$ice.#&$&
Mtodo - deleteUser
!per&ción DELEE
Ilustr&ción 26> Ll&%&d& RE4 - Delete User
"'
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 40/56
4.4- "odelo
Anterior%ente se ?&"ló del Modelo co%o p&rte esenci&l de l& &r)uitectur& MVC y se di#o )ue el
Modelo es l& c&p& )ue contiene los d&tos y los proces& & petición del usu&rio p&r& o"tener l&
inor%&ción neces&ri& )ue será desple(&d& in&l%ente &l usu&rio. Es decirF el Modelo es l& p&rte
)ue se enc&r(& de los d&tosF y co%o t&lF necesit& %&ntenerlos &ccesi"les de %&ner& sencill& p&r&
su &l%&cen&%iento y recuper&ción. on t&l propósito se "uscó un& pl&t&or%& )ue &cilit&r& l&s
unciones de persistenci& de d&tos en l& C&se de D&tos y )ue per%itier& tr&nsp&rente%ente
tr&"&#&r sie%pre con o"#etos de &$&. 4e ?& us&do Alresco co%o :estor Docu%ent&l.
4.4.1- Alresco
Alresco es un siste%& de &d%inistr&ción de contenidos li"reF incluye un repositorio de contenidos.
Este siste%& de (estión de contenido 8e" está des&rroll&do con tecnolo(H& &$&.
4e distri"uye en dos $&ri&ntes dierentes>
– Alresco o%%unity Edition> Es sot8&re li"reF con licenci& L:PL de códi(o &"ierto y
estánd&res &"iertos.
– Alresco Enterprise Edition> 4e distri"uye "&#o licenci& de códi(o &"ierto y estánd&res
&"iertos con soporte co%erci&l y propiet&rio & esc&l& e%pres&ri&l.
P&r& el proyecto ?& sido neces&rio inst&l&r l& $ersión Alresco o%%unity Edition. Este (estor
docu%ent&l incluye un& serie de 8e"scripts serán eplic&dos & continu&ción )ue &cilit&n el
interc&%"io de d&tos entre nuestro ontrol&dor y el Modelo.
#!
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 41/56
4.4.2- %e scripts.
Un 8e" script es un ser$icio 8e" enl&<&do & un& URI. Este ser$icio responde & los %todos P
co%o :EF P!4F PU y DELEE. Es posi"le ll&%&r & los 8e" scripts eistentes en Alresco o
cre&r propios 8e" scripts. Por e#e%ploF se puede cre&r un propio 8e" script p&r& eponer un&
inter&< RE4ul de un repositorio person&li<&do.
Un 8e" script se co%pone de tres &rc?i$os>
– un &rc?i$o .%l. ontiene l& descripción del 8e" scriptF URIF no%"reF etc.
– un &rc?i$o .#s. ontiene el códi(o &$&4cript.
– un &rc?i$o .tl. L& present&ción de l& respuest& 'ist&.
Ilustr&ción 2> ;e" 4cript M' Alresco
En este proyecto se ?&n us&do los 8e" scripts y& eistentes en AlrescoF )ue nos per%ite us&r un
códi(o pro"&do y li"re de errores p&r& %&nipul&r d&tos en l& c&p& de persistenci& o Modelo.
#1
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 42/56
4.4.3- ,ite Alresco
Un sitio es un áre& del proyecto donde se puede co%p&rtir contenidos y col&"or&r con otros
%ie%"ros del sitio.
&d& sitio tiene un &#uste de $isi"ilid&d )ue %&rc& el sitio co%o p0"lico o pri$&do. Este &#uste
control& )uin puede $er el sitio y có%o los usu&rios se con$ierten en %ie%"ros del sitio.
P&r& co%p&rtir los &rc?i$os se ?& cre&do un sitio U )ue contiene un& c&rpet& ll&%&d&
>ocumentos.
Ilustr&ción 2*> Alresco - 4ite UC
En l& c&rpet& >ocumentos) es donde se &lo#&r&n todos los &rc?i$os. &d& $e< )ue se ?&(& un
uplo&d o un do8nlo&d se ?&rá so"re est& c&rpet&.
En l& si(uiente i%&(en $e%os el contenido de l& c&rpet& >ocumentos
#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 43/56
Ilustr&ción 2/> Alresco - ontenido c&rpet& Docu%entos
P&r& %ostr&r el contenido de l& c&rpet& desde nuestr& &plic&ciónF se in$oc& &l 8e" script
(etDocu%ents y lo %ostr&%os en el (rid de l& &plic&ción cliente. El result&do se %uestr& en l&
si(uiente i%&(en>
Ilustr&ción +> liente - ontenido c&rpet& Docu%entos desde el :RID de s%&rt:;
#"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 44/56
4.4.4- Invocación de los casos de uso más importantes
L&s ll&%&d&s &l %odelo se ?&cen & tr&$s de l& in$oc&ción de los ;e" 4cripts de Alresco )ue son
in$oc&dos & tr&$s de un& ll&%&d& P.
A continu&ción se present& l& i%ple%ent&ción en 4prin( de l&s in$oc&ciones & los ;e" 4cripts de
Alresco & p&rtir de los c&sos de uso deinidos p&r& c&d& tipo de usu&rio.
Usuario invitado
El usu&rio in$it&doF tr&s rellen&r un or%ul&rioF se d& de <& en l& &plic&ción.
P&c9&(e co%.u".pro#ectRE4.ser$ice.i%pl
l&se User4er$iceI%pl.#&$&
Mtodo - ne8User
Ilustr&ción +1> I%ple%ent&ción ;e" 4cript Alresco - Re(istro
##
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 45/56
Usuario común
El usu&rio de"e introducir el no%"re y p&ss8ordF si es correcto se lo(& en l& &plic&ción. En c&so
contr&rio de$uel$e %ens&#e de error.
P&c9&(e co%.u".pro#ectRE4.lo(in
l&se Alresco4ession.#&$&
Mtodo - inici&r4essionAlresco
Ilustr&ción +2> I%ple%ent&ción ;e" 4cript Alresco - Lo(in
#5
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 46/56
– 4i el usu&rio y& está lo(&do en l& &plic&ción puede su"ir &rc?i$os %ulti%edi& del
repositorio
P&c9&(e co%.u".pro#ectRE4.ser$ices.i%pl
l&se 7ile4er$iceI%pl.#&$
Mtodo uplo&d7ile
Ilustr&ción ++> I%ple%ent&ción ;e" 4cript Alresco - Uplo&d
#$
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 47/56
Usuario Administrador
Eli%in& un usu&rio del repositorio. o%prue"& pre$i&%enteF )ue el usu&rio se& el Ad%inistr&dor.
P&c9&(e co%.u".pro#ectRE4.ser$ices.i%pl
l&se User4er$iceI%pl.#&$&
Mtodo - deleteUser
Ilustr&ción +,> I%ple%ent&ción ;e" 4cript Alresco - Delete User
#%
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 48/56
B- Ane5osI%á(enes del sitio 8e"
A continuación se muestran algunas capturas de pantalla del sitio web desarrollado siguiendo los
casos de uso por tipo de usuario.
Ilustr&ción +5> P&nt&ll& Inici&l
#&
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 49/56
Ilustr&ción +6> 7or%ul&rio de Re(istro y $&lid&ciones
Ilustr&ción +> Entr&d& usu&rio
#'
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 50/56
Ilustr&ción +*> Usu&rio desc&r(& contenido
Ilustr&ción +/> Usu&rio su"e contenido
5!
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 51/56
Ilustr&ción ,> Lo(in Ad%in
Ilustr&ción ,1> Ad%in Eli%in&r Usu&rios
51
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 52/56
Ilustr&ción ,2> Ad%in Men0 Eli%in&r Usu&rios
Ilustr&ción ,+> Ad%in onir%& Eli%in& Usu&rio
5
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 53/56
Ilustr&ción ,,> Ad%in :rid Usu&rio Eli%in&do
Ilustr&ción ,5> Ad%in :rid ontenido Eli%in&r
5"
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 54/56
C- !onclusiones4e pretendH& re&li<&r un& introducción & l& pro(r&%&ción de &plic&ciones #$%& con %pring +.F
smart*+& y ,l'resco. on un& Ar)uitectur& ro"ust& y ácil de etender y %&ntener co%o es l&
Ar)uitectur& "VC
on el ecelente r&%e8or9 )ue nos "rid& $oo6le . Eli%in&ndo l&s prue"&s del n&$e(&dor y
depur&ciónF tr&"&#o )ue ?&ce el rame;or< $%& nos orece un cl&ro eno)ue orient&do & o"#etos
p&r& el des&rrollo de l& inter&< de usu&rio prote(iendo de los errores del n&$e(&dor y sus
peculi&rid&des. on el %is%o len(u&#e de pro(r&%&ción )ue se ?& us&do en el ser$idor 'A#A.P&r& cre&r un &specto tot&l%ente 0nico y si%pliic&do sólo se re)uiere conoci%ientos "ásicos o
nulos de diseGo &"!,, 'avascript.
ó%o cu&l)uier &plic&ción ,prin6 M'F ?e%os coni(ur&do el Disp&tc?er4er$letF ?e%os
&prendido & decl&r&r control&dores %edi&nte l& ¬&ción Bontroller. &%"in ?e%os %&pe&do
peticiones con l& ¬&ciones y por 0lti%o ?e%os &soci&do $&lores de $&ri&"les de l& URL &
p&rá%etros de los %todos control&dor %edi&nte su URI. on todo esto pode%os co%en<&r &
construir un& &plic&ción RE4 en l& )ue c&d& recurso se& &ccesi"le %edi&nte un& URL &%i(&"le.
En resu%enF conociendo un len(u&#e de pro(r&%&ción t&n potente co%o 'A#A es posi"le
construir &plic&ciones en poco tie%po con los r&%e8or9s %ás potentes us&dos en l&
pro(r&%&ción co%o son el rame;or< ,prin6 y l& tecnolo(H& )ue nos re(&l& $oo6le con su
rame;or< $%&.
5#
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 55/56
D- uentesA'A(
?ttp>==888.8+sc?ools.co%=&#&=
?ttp>==888.?t%le&ndo.co%=&rc?i$o=tutori&l-&#&
$%&
?ttps>==de$elopers.(oo(le.co%=8e"-tool9it=?les
smart$%&
?ttps>==de$elopers.(oo(le.co%= ?ttps>==de$elopers.(oo(le.co%=8e"-
tool9it=tools=(8tdesi(ner=e&tures=(8t=s%&rt(8t?len ?ttp>==code.(oo(le.co%=p=s%&rt(8t=
?ttp>==888.s%&rtclient.co%=s%&rt(8t=s?o8c&se=
,prin6
?ttp>==#ersey.#&$&.net=non&$=docu%ent&tion=sn&ps?ot=#&rs-resources.?t%l
?ttp>==st&tic.sprin(source.or(=sprin(=docs=current=sprin(-r&%e8or9-reerence
In?erit&nce M&ppin( Reerence>
?ttp>==docs.#"oss.or(=?i"ern&te=core=+.5=reerence=en=?t%l=in?erit&nce.?t%l
ersey A3-R4 Annot&tions> ?ttps>==8i9is.or&cle.co%=displ&y=ersey=!$er$ie8XoXA3-
R4X1.X7e&tures
A3C Annot&tions> ?ttp>==docs.or&cle.co%=#&$&ee=6=&pi=#&$&=%l="ind=&nnot&tion=p&c9&(e-
su%%&ry.?t%
Alresco
?ttp>==888.&lresco.co%=resources=docu%ent&tion
?ttp>==8i9i.&lresco.co%=8i9i=+.Y;e"Y4criptsY7r&%e8or
55
7/23/2019 Memoria Spring Java
http://slidepdf.com/reader/full/memoria-spring-java 56/56
In6enierEa inversa:
?ttp>==888.$isu&l-p&r&di(%.co%=
?ttp>==888.o%ondo.co%=
?ttp>==888.soy&tec.co%=eu%l2=
?ttp>==&r(ou%l.ti(ris.or(=