Você está na página 1de 7

19/02/2015

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
>

Chamando um web service REST com


JSF
postadoem6dedezde201209:07porRafaelSakurai

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.

Fazerlogin | Denunciarabuso | Imprimirpgina | Tecnologia GoogleSites

http://www.universidadejava.com.br/docs/chamandoumwebservicerestcomjsf

7/7