Documente Academic
Documente Profesional
Documente Cultură
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
p ubl i c c la s s
U n i ve rs i da d e J a va
{
Pginainicial
Apresentaes
Materiais
Certificaes
Pesquisarosite
Conheaosprofessores
docs
>
Oservioweb(webservice)umaformadeintegraobemutilizada
atualmentepararealizaraintegraoentreaplicaes.OWebServiceREST
umadasformasdecriarumservioweb,queutilizadamuitooprotocoloHTTP
pararealizaressaintegraoentreasaplicaes.
OWebServiceRESTpodedisponibilizaratravsdoprotocoloHTTPmtodos
paramanipulaodeinformaes,porexemplo:aofazerumarequisioHTTP
atravsdomtodoGETparaaURL
http://localhost:8080/CinemaREST/servico/filmespossvelobterumrecurso,
quenessecasoumalistadefilmes.SechamaressaURLatravsdeum
navegadorpodemosverificaroretornodesseWebServiceREST.
ParaconsumirumWebServiceREST,existemdiversasimplementaes
possveis,umadelasatravsdaAPIJersey,queaimplementaode
refernciadoJavaEE.
CrieumaaplicaowebchamadaCinemaJSF,queutilizaoframeworkdo
JavaServerFacesparacriaodaspginasWEB.
Vamosalterarumapginainicialindex.xhtml,paraqueelautilizeum
managedbeanparaconsumiressewebservio,apginaficarassim:
<?xmlversion='1.0'encoding='UTF8'?>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
1/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>MeuCinema</title>
</h:head>
<h:body>
<h1>Filmesemcartaz</h1>
<h:outputTextvalue="#{cinemaMB.filmesEmCartaz}"/>
</h:body>
</html>
OoutputTextirchamaromtodogetFilmesEmCartaz()damanagedbean
CinemaMB,quechamaowebserviceRESTquetraztodososfilmesemcartaz.
ParautilizaraAPIdoJerseydentrodaaplicao,cliquecomobotodireitodo
mouseemcimadonomedoprojetoeescolhaoitemPropriedades.Natelade
propriedadesacesseacategoriaBibliotecaseadicioneabibliotecaJersey1.8
(JAXRSRI)atravsdomenuAdicionarBiblioteca.
VamoscriaramanagedbeanCinemaMBcomaimplementaodomtodo:
packagebr.metodista.managedbean;
importcom.sun.jersey.api.client.Client;
importcom.sun.jersey.api.client.WebResource;
importjavax.faces.bean.ManagedBean;
@ManagedBean
publicclassCinemaMB{
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
2/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
publicStringgetFilmesEmCartaz(){
Clientc=Client.create();
WebResourcewr=c.resource("http://localhost:8080/CinemaREST/servico/filmes");
returnwr.get(String.class);
}
}
ComaclasseClientpossvelobterumresourceweb(recursoweb)atravs
da
URLdowebserviceREST,ecomesserecursopossvelchamarosmtodos
queowebserviceRESTsuporta,como:get,post,put,delete,etc.
Aochamaromtodowr.get(String.class),estamosesperandoqueachamada
paraesseserviodevolvaumaString,nesseexemploessaStringvemno
formatoJSON(JavaScriptObjectNotation),maspoderiaserumaStringsimples,
umformatoXML,etc.AoexecutaraaplicaoCinemaJSFteremosaseguinte
tela:
ParaconverteresseJSONemobjetoJava,podemosusarumaAPIsimples
doGooglechamadagson(https://code.google.com/p/googlegson)querealiza
essaconversodemaneirafcil.PrimeirovamoscriaraclasseFilmequeir
representarcadafilmedalista:
packagebr.metodista.modelo;
publicclassFilme{
privateLongid;
privateStringfilme;
privateStringsinopse;
privateStringgenero;
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
3/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
privateIntegerduracao;
privateStringtrailer;
publicFilme(){
}
publicLonggetId(){
returnid;
}
publicvoidsetId(Longid){
this.id=id;
}
publicStringgetFilme(){
returnfilme;
}
publicvoidsetFilme(Stringfilme){
this.filme=filme;
}
publicStringgetSinopse(){
returnsinopse;
}
publicvoidsetSinopse(Stringsinopse){
this.sinopse=sinopse;
}
publicStringgetGenero(){
returngenero;
}
publicvoidsetGenero(Stringgenero){
this.genero=genero;
}
publicIntegergetDuracao(){
returnduracao;
}
publicvoidsetDuracao(Integerduracao){
this.duracao=duracao;
}
publicStringgetTrailer(){
returntrailer;
}
publicvoidsetTrailer(Stringtrailer){
this.trailer=trailer;
}
}
Adicioneabibiotecadogsonnoprojeto,cliquecomobotodireitodomouse
emcimadonomedoprojetoeescolhaoitemPropriedades.Natelade
propriedadesacesseacategoriaBibliotecaseadicioneabibliotecagson
2.2.2.jaratravsdomenuAdicionarJAR/Pasta.
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
4/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
VamosalteraroCinemaMBparautilizaraAPIdogsoneconverteroJSONem
umalistadefilmes:
packagebr.metodista.managedbean;
importbr.metodista.modelo.Filme;
importcom.google.gson.Gson;
importcom.google.gson.reflect.TypeToken;
importcom.sun.jersey.api.client.Client;
importcom.sun.jersey.api.client.WebResource;
importjava.util.List;
importjavax.faces.bean.ManagedBean;
@ManagedBean
publicclassCinemaMB{
publicList<Filme>getFilmesEmCartaz(){
Clientc=Client.create();
WebResourcewr=c.resource("http://localhost:8080/CinemaREST/servico/filmes");
Stringjson=wr.get(String.class);
Gsongson=newGson();
returngson.fromJson(json,newTypeToken<List<Filme>>(){}.getType());
}
}
Agoravamosmudarapginaindex.xhtmlparamostrarumatabelacomos
filmes:
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
5/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
<?xmlversion='1.0'encoding='UTF8'?>
<!DOCTYPEhtmlPUBLIC"//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>MeuCinema</title>
</h:head>
<h:body>
<h1>Filmesemcartaz</h1>
<h:outputTextvalue=""/>
<h:dataTablevalue="#{cinemaMB.filmesEmCartaz}"var="f"width="100%">
<h:column>
<f:facetname="header">
<h:outputTextvalue="Titulo"/>
</f:facet>
<h:outputTextvalue="#{f.filme}"/>
</h:column>
<h:column>
<f:facetname="header">
<h:outputTextvalue="Genero"/>
</f:facet>
<h:outputTextvalue="#{f.genero}"/>
</h:column>
<h:column>
<f:facetname="header">
<h:outputTextvalue="Durao"/>
</f:facet>
<h:outputTextvalue="#{f.duracao}min"/>
</h:column>
<h:column>
<f:facetname="header">
<h:outputTextvalue="Sinopse"/>
</f:facet>
<h:outputTextvalue="#{f.sinopse}"/>
</h:column>
</h:dataTable>
</h:body>
</html>
Atelaficarcomaseguinteaparncia:
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
6/7
19/02/2015
ChamandoumwebserviceRESTcomJSFpublicclassUniversidadeJava{
Comentrios
Vocnotempermissoparaadicionarcomentrios.
http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf
7/7