SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler offline
Monday, July 27, 2009
JavaServer Faces
                               &
                              REST
                            Eduardo Bregaida




Monday, July 27, 2009
Monday, July 27, 2009
Você vai gostar




Monday, July 27, 2009
Quem Sou?
                •       Desenvolvedor Java há 5 anos;

                •       Possui experiência com J2SE, J2EE nas empresas:

                        •   Saargummi do Brasil LTDA, 3º Quadrante Informática, G&P, JAPI Informática LTDA, SOS
                            Computadores, Tata Consultancy Services - TCS (ABNAMRO Bank, VisaNet, Cardif), IT
                            Training, Masterdom (PRODESP), Possege (Co-Fundador) como Analista de Sistemas Java;

                •       Agente certificador do Projeto de ensino a distância JEDI no grande ABC em São Paulo:

                •       Membro do JCP - Java Community Process;

                •       Certificado IBM em Message Broker Developer Solution;

                •       Certificado Scrum Master;

                •       Criador do Blog Java Anywhere - www.javawora.blogspot.com

                •       Coordenador e palestrante em diversos eventos de Java.




Monday, July 27, 2009
Monday, July 27, 2009
CQ Teste
                        Primeira Pergunta:
                          O que é JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
JSF?




Monday, July 27, 2009
Monday, July 27, 2009
Não é nada disso, a
                         resposta certa
                                É:




Monday, July 27, 2009
JSF - Java Server Faces




Monday, July 27, 2009
O que é JSF?

                 • É mais do que um framework, é uma especificação baseada em MVC;
                 • Suporte a internacionalização;
                 • Facilita criação de telas;
                 • Facilita a transferência dos dados entre telas e camadas de negócio através da EL.
                 • Produtividade para conversores recebidos do formulário para os tipos nas classes;
                 • Flexibilidade para renderização.
                 • Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor.
                 • Mecanismos produtivos para validação de campos na tela.
                 • Facilidade para criação de componentes;




Monday, July 27, 2009
Especificações
                 • JSF 1.0 e 1.1 – JSR 127
                     – Problemas com renderização
                     – ELs diferentes entre JSP e JSF
                     – Não portava a tag JSTL <c:forEach>

                 • JSF 1.2 – JSR 252
                     – Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram muitas
                       uniões e estão dentro do JEE.

                 • JSF 2.0 – JSR 314
                     – Novo ciclo de vida na parte do cliente (Browser);
                     – Escopo de navegação, antes utilizado através do MyFaces Tomahawk, JBoss Seam e Spring
                       Annotation;
                     – Adeus XML, configurações via Annotations;
                     – Exception Handler, quando ocorrer um erro direcionamos para uma página de erro;
                     – Templating;
                     – Subimissão Via GET, antes só podia via POST;
                     – AJAX nativo;
                     – Serviços JSF sendo acessador via REST;
                     – E muito mais, acompanhe pelo JCP a especificação.




Monday, July 27, 2009
Managed Beans
                 •É uma classe que expões objetos de negócio para camada de
                  apresentação;

                 •São Registrados no faces-config.xml;

                 •Objetos que sofrerão alterações em seus atributos durante uma
                  requisição, assim como seus métodos podem ser chamados a partir de
                  um command;

                 •São como as Actions do Struts, porém os form beans são injetados por
                  setters dentro do seu próprio bean;

                 •Os ManagedBeans serão usados na EL das páginas.




Monday, July 27, 2009
EL - Expression Language

                 •É uma poderosa linguagem de expressão (Linguagem de navegação)
                  para acessar propriedades de beans e coleções.

                 •Quando ocorrer uma requisição pelo browser é preenchido
                  dinamicamente os elementos da página pela camada de negócios.

                 •Quando ocorre um Submit ocorre a modificação no estado da camada
                  de negócio.




Monday, July 27, 2009
Roteiro de Uso




Monday, July 27, 2009
Roteiro Básico
1.Criar um bean que represente o formulário;
2.Criar os DAOs;
3.Criar um controlador (Handler) que leia os dados do formulário, chame a
  lógica de negócio, guarde os resultados em beans e tenha um retorno;
4.Criar os JSP´s responsáveis por cada retorno declarado;
5.NUNCA Esqueça: <f:view> e <h:form> para formulários;
6.Especificar o Action Controller com o atributo de ação
  <h:commandButton>;
7.O faces-config é usado para declarar o form bean e as regras de
  navegação.




Monday, July 27, 2009
Exemplo de Código



Monday, July 27, 2009
Bean
    •       @Entity

public class Ponto {
	 @Id
	 @GeneratedValue(strategy = GenerationType.IDENTITY)
	 private long id;
	 private Double latitude;
	 private Double longitude;
	 private Double raio;
	 private boolean status;
	 private String descricao;

             //getters and setters
}




Monday, July 27, 2009
DAO
      public class pontoDAO {

	     private Session session;

	     private Logger logger = Logger.getLogger(Ponto.class);

	     public pontoDAO(Session session) {
	     	    logger.info("Construtor" + session);
	     	    this.session = session;

	     }

	     public void salvar(Ponto ponto) {
	     	    session.saveOrUpdate(ponto);
	     }

	     public void excluir(Ponto ponto) {
	     	    session.delete(ponto);
	     }

	     public Ponto selecionar(Ponto ponto) {
	     	    return (Ponto) session.load(Ponto.class,
	     	    	     	    ponto.getId());
	     }

}




Monday, July 27, 2009
public class PontoHandler {
      private Ponto ponto = new Ponto();
      public void selecionaDados() {
      	
      	
           Session session = HibernateUtil.getCurrentSession();
           DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
                                                                    Managed Bean
	     	    dao.load((long) ponto.getId());
	     }

	     public Ponto getPonto() {
	     	    return ponto;
	     }

	     public void setPonto(Ponto ponto) {
	     	    this.ponto = ponto;
	     }

	     public List<Ponto> getAllPonto() {
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    return dao.list();
	     }

	     public void carregar(ActionEvent event) {
	     	    UIComponent comandLink = event.getComponent();
	     	    UIParameter parameter = (UIParameter) comandLink
	     	    	     	    .findComponent("editId");
	     	    Long id = (Long) parameter.getValue();
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    this.ponto = dao.load(id);

	     }

	     public void excluir(ActionEvent event) {
	     	    UIComponent comandLink = event.getComponent();
	     	    UIParameter parameter = (UIParameter) comandLink
	     	    	     	    .findComponent("editId");
	     	    Long id = (Long) parameter.getValue();
	     	    Session session = HibernateUtil.getCurrentSession();
	     	    DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class);
	     	    this.ponto = dao.load(id);
	     	    dao.deleta(ponto);
	     	    this.ponto = new Ponto();

	     }	    	

}


Monday, July 27, 2009
JSP
      <f:view>
	     <h:form id="menuId">
	     	     <t:panelGrid align="center">
	     	     	     <h:selectOneMenu title="Linha" value="#{pontoHandler.ponto.linha}"
	     	     	     	     converter="simpleIndexConverter">
	     	     	     	     <t:selectItems value="#{horarioHandler.allLinhas}" var="c"
	     	     	     	     	     itemLabel="#{c.nome}" itemValue="#{c}" />
	     	     	     </h:selectOneMenu>
	     	     	     <h:outputText value="Latitude:" styleClass="titulo_campos" />
	     	     	     <h:inputText value="#{pontoHandler.ponto.latitude}" required="true"
	     	     	     	     validator="#{validadorHandler.validaNumeroReal}" />
	     	     	     <h:commandButton styleClass="BUTTON_imagem" value="Gravar" action="#{pontoHandler.salvar}" />
	     	     </t:panelGrid>
	     </h:form>
	     <h:form>
	     	     <!-- Mostra as msgs de erro-->
	     	     <h:messages style="color:red" />
	     </h:form>
	     	     <h:form>
	     	     <t:panelGrid align="center">
	     	     	     <h:dataTable value="#{pontoHandler.allPonto}" id="tabelaDados"
	     	     	     	     rows="5" var="p" border="1"
	     	     	     	     rendered="#{not empty pontoHandler.allPonto}"
	     	     	     	     styleClass="EDIT_BACKGROUND" headerClass="cabecalho"
	     	     	     	     rowClasses="linha1,linha2">
	     	     	     	     <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="ID" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:outputText value="#{p.id}" />
	     	     	     	     </h:column>
	     	     	     	     <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="Latitude" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:outputText value="#{p.latitude}" />
	     	     	     	     </h:column>
                      <h:column>
	     	     	     	     	     <f:facet name="header">
	     	     	     	     	     	     <h:outputText value="Exclus‹o" />
	     	     	     	     	     </f:facet>
	     	     	     	     	     <h:commandLink actionListener="#{pontoHandler.excluir}">
	     	     	     	     	     	     <h:outputText value="Excluir" />
	     	     	     	     	     	     <f:param id="excluirId" name="id" value="#{p.id}" />
	     	     	     	     	     </h:commandLink>
	     	     	     	     </h:column>
	     	     	     </h:dataTable>
	     	     	     <t:dataScroller for="tabelaDados" paginator="true"
	     	     	     	     paginatorMaxPages="10"></t:dataScroller>
	     	     </t:panelGrid>
	     </h:form>
</f:view>

Monday, July 27, 2009
Faces Config
    <?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://
java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>

<application>
	   	  <message-bundle>
	   	  	   messages
	   	  </message-bundle>
</application>
<managed-bean>
	   	  <managed-bean-name>pontoHandler</managed-bean-name>
	   	  <managed-bean-class>br.com.possege.nx.handler.ponto.PontoHandler</managed-bean-class>
	   	  <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

<navigation-rule>
	   <from-view-id>*</from-view-id>
	   <navigation-case>
	   	   	  <from-outcome>menuCadastroPonto</from-outcome>
	   	   	  <to-view-id>/ponto.jsp</to-view-id>
	   </navigation-case>
</navigation-rule>




Monday, July 27, 2009
Run Forrest, Run




Monday, July 27, 2009
IDEs Java
                 •Netbeans

                 •Eclipse
                   – EasyEclipse
                   – MyEclipse
                   – Red Hat Developer Studio

                 •Rational Application Developer – WSAD/RAD

                 •JDeveloper




Monday, July 27, 2009
Customizações




Monday, July 27, 2009
Customizações

                 •Facilidade na customização de:
                   –Validadores
                   –Conversores
                   –Componentes de Interface
                   –Renderizadores
                   –Mensagens




Monday, July 27, 2009
Mudando o Default




Monday, July 27, 2009
Mudando o Default

  •Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é
   questão de uma linha de configuração.


  •A beans factory: porque não usar Spring do que managed beans?


  •Renderização dos componentes: existem implementações, utilizando por exemplo XUL
   ou HTML + Ajax.




Monday, July 27, 2009
As Implementações




Monday, July 27, 2009
Implementações
                 • Apache
                     – MyFaces
                        • Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra

                 • Red Hat/JBoss
                     – RichFaces
                     – Ajax4JSF

                 • Red Hat/JBoss
                     – JBoss Seam

                 • ICEsoft Technologies Inc.
                     – ICEfaces

                 • Oracle
                     – Mojarra

                 • Oracle
                     – ADF Faces




Monday, July 27, 2009
REST




Monday, July 27, 2009
O que é Web Service?



Monday, July 27, 2009
Web Services

   • Comunicação entre aplicações via INTERNET;

   • Mais informações?
    • Consulte o Wikipédia: http://pt.wikipedia.org/wiki/Web_service

Monday, July 27, 2009
Monday, July 27, 2009
CQ Teste
                        Primeira Pergunta:
                          O que é REST?




Monday, July 27, 2009
Monday, July 27, 2009
O que é REST?


                                 ?


                             ?
Monday, July 27, 2009
Monday, July 27, 2009
Errado, a resposta certa
                           É:




Monday, July 27, 2009
Web Services - REST




Monday, July 27, 2009
REST
    •      REpresentational State Transfer (Transferência de Estado
           Representacional);

    •      Este termo surgiu no ano de 2000;

    •      Em uma tese de doutorado de Roy Fielding;

    •      Baseado no protocolo HTTP;

          •      POST, GET, PUT e DELETE (Menos o POST as demais são
                 freqüentemente envolvidas com CRUD).

    •      Cada recurso é direcionado através de sua URI;

    •      Sintaxe Universal;

    •      Mais simples;

    •      Menos Overhead de protocolos.
Monday, July 27, 2009
REST
     • Utiliza Recursos (URI - Identificador Uniforme de
             Recurso);

     • Se comunicam através de uma interface HTTP;
     • Pode ser transmitido por diversos conectores, porém
             não poderá ver mais nada do que o seu pedido;

     • Assim não é necessário conhecer proxys, caches e etc.


Monday, July 27, 2009
Arquitetura REST




         http://brunopereira.org/webservicesrest-arquitetura/


Monday, July 27, 2009
Declarativo




         http://brunopereira.org/webservicesrest-arquitetura/



Monday, July 27, 2009
Código Rest com Jersey
 @Path("/paisesWS")
 public class PaisesRest {

         @GET
         @Produces("text/plain")
         public String getClichedMessage() {
         	 List<String> paises = new ArrayList<String>();
         	 paises.add("======Listando alguns Paises via REST + Jersey======");
         	 paises.add("n Brasil");
         	 paises.add("n India");
         	 paises.add("n Argentina");
         	 paises.add("n Guatemala");
         	 paises.add("n Estou no meu WebService sendo acessado");
         	
              return paises.toString();
         }
 }

Monday, July 27, 2009
Alguns Frameworks
        •       API REST para Java - JAX-RS:

              •         http://jcp.org/aboutJava/communityprocess/final/jsr311/
                        index.html

        •       GlassFish Jersey:

              •         https://jersey.dev.java.net/

        •       JBoss RestEasy:

              •         http://www.jboss.org/resteasy/

        •       Restlet:

              •         http://www.restlet.org/

        •       Apache CXF:

              •
Monday, July 27, 2009
                        http://cxf.apache.org/
JSF & REST
                    • Imagine que precise de tags em JSF para
                        criar um Web Service REST como um
                        ATOM, padrão que segue a mesma idéia de
                        RSS.
                    • Como faria?

                    • É com você Rafinha...
Monday, July 27, 2009
Monday, July 27, 2009
Não faço a menor idéia e
                            vocês aí da platéia?
                            Alguma idéia?




Monday, July 27, 2009
Monday, July 27, 2009
Haaaaaa, acertou quem disse
                           que há Tags para o JSF
                           suportar Rest.




Monday, July 27, 2009
Tag Suport JSF/REST
   • RestFaces
     • https://restfaces.dev.java.net/
   • Para RSS
   • RSS4JSF
     • http://code.google.com/p/rss4jsf/wiki/Usage
   • FaceRSS
     • http://rsslib4j.sourceforge.net
   • YARFRAW
     • http://yarfraw.sourceforge.net/
Monday, July 27, 2009
Monday, July 27, 2009
Meninos e Meninas lembrem-se:
                        Nem REST, nem JSF é uma solução perfeita,
                                          ou seja,
                                   No Silver Bullet.




Monday, July 27, 2009
Monday, July 27, 2009
É brincadeira viu, e se eu
                             precisar usar em um
                             aplicativo não JSF?




Monday, July 27, 2009
Monday, July 27, 2009
Fique frio, eu ainda não terminei, olhe agora...




Monday, July 27, 2009
Outros Frameworks e Linguagens

    • Struts2Rest
     • http://code.google.com/p/fulworx/
    • SpringMVC+Restlet
     • http://www.dehora.net/journal/2007/11/19/java-rest/
    • PHP
     • http://www.xml.lt/Resources/Framework
Monday, July 27, 2009
Monday, July 27, 2009
Vamos ver um exemplo.




Monday, July 27, 2009
•         Referências JSF:
   •         Alguns poucos Sites - Pesquise no Google:


         •           http://javawora.blogspot.com/search/label/JSF


         •           http://groups.google.com.br/group/javasf/?pli=1


         •           http://www.rponte.com.br/2008/06/30/o-que-esperar-do-jsf-20/


         •           http://www.caelum.com.br


         •           http://www.guj.com.br/java.tutorial.artigo.158.1.guj


         •           http://java.sun.com/javaee/javaserverfaces/


         •           www.jcp.org


                 •         JSRs: 127; 252; 314.

• Revistas:
    – Mundo Java nº: 21 e posteriores.
    – Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48 e posteriores.

• Livros:
     – Faces in Action (Kito Mann – Manning, 2004);
     – JavaServer Faces (Hans Bergsten – O´Reilly, 2004);
     – Core JavaServer Faces (David Geary e Cay Horstmann).




Monday, July 27, 2009
•           Referências REST:
     •           Alguns poucos Sites - Pesquise no Google:


             •           http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/


             •           http://unfoldingtheweb.com/2009/07/20/to-rest-or-not-to-rest/


             •           http://iv.incubadora.fapesp.br/portal/doc/TutorialReST


             •           http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm


             •           http://pt.wikipedia.org/wiki/REST


             •           http://www.megginson.com/blogs/quoderat/2005/03/09/public-rest-application-seniors-canada-online/


             •           http://www.markbaker.ca/blog//2005/04/14/#2005-04-amazon-next


             •           http://jim.webber.name/2008/09/17/595957ef-63a2-4ff9-a477-43ea8db51cdd.aspx


             •           http://www.infoq.com/interviews/jim-webber-qcon-london


             •           http://www.devmedia.com.br/articles/viewcomp.asp?comp=7357


             •           http://wikis.sun.com/display/Jersey/Main


             •           www.jcp.org


                     •         JSR: 311.

 • Revistas:
     – Mundo Java;
     – Java Magazine.

 • Livros:
      – Developing Enterprise Web Services: An Architect's Guide (James Webber e Sandeep Chatterjee);
      – RESTful Web Services (Leonard Richardson, Sam Ruby e David Heinemeier Hansson).

Monday, July 27, 2009
Dúvidas?




Monday, July 27, 2009
Fim




                                                       Obrigado!


                        eduardo.bregaida@gmail.com
                             http://bregaida.com
                        http://javawora.blogspot.com
                               twitter: bregaida

Monday, July 27, 2009

Mais conteúdo relacionado

Mais procurados

WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08Gilson Silva
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeRafael Ponte
 
Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer FacesWillian Watanabe
 
Melhores apps rails
Melhores apps railsMelhores apps rails
Melhores apps railsvinibaggio
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoIvan Rosolen
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0Paulo Neto
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOLeonardo Sousa
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesCI&T
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 

Mais procurados (20)

Java Web 1 Introducao
Java Web 1 IntroducaoJava Web 1 Introducao
Java Web 1 Introducao
 
WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08WEB 2 - Aula 01 - 02.08
WEB 2 - Aula 01 - 02.08
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
JavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividadeJavaServer Faces - Desenvolvendo aplicações web com produtividade
JavaServer Faces - Desenvolvendo aplicações web com produtividade
 
Introdução ao JavaServer Faces
Introdução ao JavaServer FacesIntrodução ao JavaServer Faces
Introdução ao JavaServer Faces
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
Asp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 PtAsp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 Pt
 
Melhores apps rails
Melhores apps railsMelhores apps rails
Melhores apps rails
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Apresentação jsf 2.0
Apresentação jsf 2.0Apresentação jsf 2.0
Apresentação jsf 2.0
 
Arquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAOArquitetura MVC, JavaBeans e DAO
Arquitetura MVC, JavaBeans e DAO
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentes
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Apresentação jsf 1_2
Apresentação jsf 1_2Apresentação jsf 1_2
Apresentação jsf 1_2
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Model View Controller
Model View ControllerModel View Controller
Model View Controller
 

Semelhante a JavaServer Faces e REST

JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebElenilson Vieira
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesRafael Ponte
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSFDalton Valadares
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFEmmanuel Neri
 

Semelhante a JavaServer Faces e REST (20)

JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Sistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias WebSistema S2DG e Tecnologias Web
Sistema S2DG e Tecnologias Web
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Anatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer FacesAnatomia do JSF, JavaServer Faces
Anatomia do JSF, JavaServer Faces
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2Aula parte 2 de JSF 2.2
Aula parte 2 de JSF 2.2
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Framework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring bootFramework web 3 - JSF + Spring boot
Framework web 3 - JSF + Spring boot
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
Desenvolvimento Web com JSF
Desenvolvimento Web com JSFDesenvolvimento Web com JSF
Desenvolvimento Web com JSF
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
Desenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSFDesenvolvimento baseado em componentes com JSF
Desenvolvimento baseado em componentes com JSF
 
Tutorial Java EE
Tutorial Java EETutorial Java EE
Tutorial Java EE
 

Mais de Eduardo Bregaida

Treinamento Agile com Scrum - V2
Treinamento Agile com Scrum - V2Treinamento Agile com Scrum - V2
Treinamento Agile com Scrum - V2Eduardo Bregaida
 
Treinamento Agile com scrum
Treinamento Agile com scrumTreinamento Agile com scrum
Treinamento Agile com scrumEduardo Bregaida
 
Aviação Civil LT sciensa
Aviação Civil  LT sciensaAviação Civil  LT sciensa
Aviação Civil LT sciensaEduardo Bregaida
 
Management 3.0 - V. Revisada
Management 3.0 - V. RevisadaManagement 3.0 - V. Revisada
Management 3.0 - V. RevisadaEduardo Bregaida
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalEduardo Bregaida
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 Eduardo Bregaida
 
Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Eduardo Bregaida
 
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
Cultura da Empresa - um problema na Adoção Ágil - Conexão JavaCultura da Empresa - um problema na Adoção Ágil - Conexão Java
Cultura da Empresa - um problema na Adoção Ágil - Conexão JavaEduardo Bregaida
 
Scrum - passos e desafios - agile tour
Scrum - passos e desafios - agile tourScrum - passos e desafios - agile tour
Scrum - passos e desafios - agile tourEduardo Bregaida
 
Cultura da empresa - um problema na adoção ágil
Cultura da empresa - um problema na adoção ágilCultura da empresa - um problema na adoção ágil
Cultura da empresa - um problema na adoção ágilEduardo Bregaida
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeisFalhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeisEduardo Bregaida
 

Mais de Eduardo Bregaida (20)

War Room - Bregaida - V1
War Room - Bregaida - V1War Room - Bregaida - V1
War Room - Bregaida - V1
 
Feedbacks - V1
Feedbacks - V1Feedbacks - V1
Feedbacks - V1
 
Treinamento Agile com Scrum - V2
Treinamento Agile com Scrum - V2Treinamento Agile com Scrum - V2
Treinamento Agile com Scrum - V2
 
Treinamento Agile com scrum
Treinamento Agile com scrumTreinamento Agile com scrum
Treinamento Agile com scrum
 
Aviação Civil LT sciensa
Aviação Civil  LT sciensaAviação Civil  LT sciensa
Aviação Civil LT sciensa
 
Management 3.0 - V. Revisada
Management 3.0 - V. RevisadaManagement 3.0 - V. Revisada
Management 3.0 - V. Revisada
 
Minha história
Minha históriaMinha história
Minha história
 
DDD + BDD + TDD + Scrum
DDD + BDD + TDD + ScrumDDD + BDD + TDD + Scrum
DDD + BDD + TDD + Scrum
 
Java acsp
Java acspJava acsp
Java acsp
 
Aula 15 minutos
Aula 15 minutosAula 15 minutos
Aula 15 minutos
 
Java+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso TotalJava+DDD+BDD+TDD=Sucesso Total
Java+DDD+BDD+TDD=Sucesso Total
 
DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015 DDD + BDD + TDD - RF 2015
DDD + BDD + TDD - RF 2015
 
DDD - Linguagem Ubíqua
DDD - Linguagem UbíquaDDD - Linguagem Ubíqua
DDD - Linguagem Ubíqua
 
Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)Scrum - IMES 2013 (Remodelada)
Scrum - IMES 2013 (Remodelada)
 
Spring MVC - QConSP
Spring MVC - QConSPSpring MVC - QConSP
Spring MVC - QConSP
 
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
Cultura da Empresa - um problema na Adoção Ágil - Conexão JavaCultura da Empresa - um problema na Adoção Ágil - Conexão Java
Cultura da Empresa - um problema na Adoção Ágil - Conexão Java
 
Scrum - passos e desafios - agile tour
Scrum - passos e desafios - agile tourScrum - passos e desafios - agile tour
Scrum - passos e desafios - agile tour
 
Cultura da empresa - um problema na adoção ágil
Cultura da empresa - um problema na adoção ágilCultura da empresa - um problema na adoção ágil
Cultura da empresa - um problema na adoção ágil
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeisFalhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
Falhas nos projetos é culpa da Cultura da Empresa e não das metodologias ágeis
 

JavaServer Faces e REST

  • 2. JavaServer Faces & REST Eduardo Bregaida Monday, July 27, 2009
  • 4. Você vai gostar Monday, July 27, 2009
  • 5. Quem Sou? • Desenvolvedor Java há 5 anos; • Possui experiência com J2SE, J2EE nas empresas: • Saargummi do Brasil LTDA, 3º Quadrante Informática, G&P, JAPI Informática LTDA, SOS Computadores, Tata Consultancy Services - TCS (ABNAMRO Bank, VisaNet, Cardif), IT Training, Masterdom (PRODESP), Possege (Co-Fundador) como Analista de Sistemas Java; • Agente certificador do Projeto de ensino a distância JEDI no grande ABC em São Paulo: • Membro do JCP - Java Community Process; • Certificado IBM em Message Broker Developer Solution; • Certificado Scrum Master; • Criador do Blog Java Anywhere - www.javawora.blogspot.com • Coordenador e palestrante em diversos eventos de Java. Monday, July 27, 2009
  • 7. CQ Teste Primeira Pergunta: O que é JSF? Monday, July 27, 2009
  • 15. Não é nada disso, a resposta certa É: Monday, July 27, 2009
  • 16. JSF - Java Server Faces Monday, July 27, 2009
  • 17. O que é JSF? • É mais do que um framework, é uma especificação baseada em MVC; • Suporte a internacionalização; • Facilita criação de telas; • Facilita a transferência dos dados entre telas e camadas de negócio através da EL. • Produtividade para conversores recebidos do formulário para os tipos nas classes; • Flexibilidade para renderização. • Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor. • Mecanismos produtivos para validação de campos na tela. • Facilidade para criação de componentes; Monday, July 27, 2009
  • 18. Especificações • JSF 1.0 e 1.1 – JSR 127 – Problemas com renderização – ELs diferentes entre JSP e JSF – Não portava a tag JSTL <c:forEach> • JSF 1.2 – JSR 252 – Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram muitas uniões e estão dentro do JEE. • JSF 2.0 – JSR 314 – Novo ciclo de vida na parte do cliente (Browser); – Escopo de navegação, antes utilizado através do MyFaces Tomahawk, JBoss Seam e Spring Annotation; – Adeus XML, configurações via Annotations; – Exception Handler, quando ocorrer um erro direcionamos para uma página de erro; – Templating; – Subimissão Via GET, antes só podia via POST; – AJAX nativo; – Serviços JSF sendo acessador via REST; – E muito mais, acompanhe pelo JCP a especificação. Monday, July 27, 2009
  • 19. Managed Beans •É uma classe que expões objetos de negócio para camada de apresentação; •São Registrados no faces-config.xml; •Objetos que sofrerão alterações em seus atributos durante uma requisição, assim como seus métodos podem ser chamados a partir de um command; •São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean; •Os ManagedBeans serão usados na EL das páginas. Monday, July 27, 2009
  • 20. EL - Expression Language •É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar propriedades de beans e coleções. •Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios. •Quando ocorre um Submit ocorre a modificação no estado da camada de negócio. Monday, July 27, 2009
  • 21. Roteiro de Uso Monday, July 27, 2009
  • 22. Roteiro Básico 1.Criar um bean que represente o formulário; 2.Criar os DAOs; 3.Criar um controlador (Handler) que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em beans e tenha um retorno; 4.Criar os JSP´s responsáveis por cada retorno declarado; 5.NUNCA Esqueça: <f:view> e <h:form> para formulários; 6.Especificar o Action Controller com o atributo de ação <h:commandButton>; 7.O faces-config é usado para declarar o form bean e as regras de navegação. Monday, July 27, 2009
  • 23. Exemplo de Código Monday, July 27, 2009
  • 24. Bean • @Entity public class Ponto { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private Double latitude; private Double longitude; private Double raio; private boolean status; private String descricao; //getters and setters } Monday, July 27, 2009
  • 25. DAO public class pontoDAO { private Session session; private Logger logger = Logger.getLogger(Ponto.class); public pontoDAO(Session session) { logger.info("Construtor" + session); this.session = session; } public void salvar(Ponto ponto) { session.saveOrUpdate(ponto); } public void excluir(Ponto ponto) { session.delete(ponto); } public Ponto selecionar(Ponto ponto) { return (Ponto) session.load(Ponto.class, ponto.getId()); } } Monday, July 27, 2009
  • 26. public class PontoHandler { private Ponto ponto = new Ponto(); public void selecionaDados() { Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); Managed Bean dao.load((long) ponto.getId()); } public Ponto getPonto() { return ponto; } public void setPonto(Ponto ponto) { this.ponto = ponto; } public List<Ponto> getAllPonto() { Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); return dao.list(); } public void carregar(ActionEvent event) { UIComponent comandLink = event.getComponent(); UIParameter parameter = (UIParameter) comandLink .findComponent("editId"); Long id = (Long) parameter.getValue(); Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); this.ponto = dao.load(id); } public void excluir(ActionEvent event) { UIComponent comandLink = event.getComponent(); UIParameter parameter = (UIParameter) comandLink .findComponent("editId"); Long id = (Long) parameter.getValue(); Session session = HibernateUtil.getCurrentSession(); DAO<Ponto> dao = new DAO<Ponto>(session, Ponto.class); this.ponto = dao.load(id); dao.deleta(ponto); this.ponto = new Ponto(); } } Monday, July 27, 2009
  • 27. JSP <f:view> <h:form id="menuId"> <t:panelGrid align="center"> <h:selectOneMenu title="Linha" value="#{pontoHandler.ponto.linha}" converter="simpleIndexConverter"> <t:selectItems value="#{horarioHandler.allLinhas}" var="c" itemLabel="#{c.nome}" itemValue="#{c}" /> </h:selectOneMenu> <h:outputText value="Latitude:" styleClass="titulo_campos" /> <h:inputText value="#{pontoHandler.ponto.latitude}" required="true" validator="#{validadorHandler.validaNumeroReal}" /> <h:commandButton styleClass="BUTTON_imagem" value="Gravar" action="#{pontoHandler.salvar}" /> </t:panelGrid> </h:form> <h:form> <!-- Mostra as msgs de erro--> <h:messages style="color:red" /> </h:form> <h:form> <t:panelGrid align="center"> <h:dataTable value="#{pontoHandler.allPonto}" id="tabelaDados" rows="5" var="p" border="1" rendered="#{not empty pontoHandler.allPonto}" styleClass="EDIT_BACKGROUND" headerClass="cabecalho" rowClasses="linha1,linha2"> <h:column> <f:facet name="header"> <h:outputText value="ID" /> </f:facet> <h:outputText value="#{p.id}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Latitude" /> </f:facet> <h:outputText value="#{p.latitude}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Exclus‹o" /> </f:facet> <h:commandLink actionListener="#{pontoHandler.excluir}"> <h:outputText value="Excluir" /> <f:param id="excluirId" name="id" value="#{p.id}" /> </h:commandLink> </h:column> </h:dataTable> <t:dataScroller for="tabelaDados" paginator="true" paginatorMaxPages="10"></t:dataScroller> </t:panelGrid> </h:form> </f:view> Monday, July 27, 2009
  • 28. Faces Config <?xml version="1.0"?> <!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http:// java.sun.com/dtd/web-facesconfig_1_1.dtd"> <faces-config> <application> <message-bundle> messages </message-bundle> </application> <managed-bean> <managed-bean-name>pontoHandler</managed-bean-name> <managed-bean-class>br.com.possege.nx.handler.ponto.PontoHandler</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <from-view-id>*</from-view-id> <navigation-case> <from-outcome>menuCadastroPonto</from-outcome> <to-view-id>/ponto.jsp</to-view-id> </navigation-case> </navigation-rule> Monday, July 27, 2009
  • 29. Run Forrest, Run Monday, July 27, 2009
  • 30. IDEs Java •Netbeans •Eclipse – EasyEclipse – MyEclipse – Red Hat Developer Studio •Rational Application Developer – WSAD/RAD •JDeveloper Monday, July 27, 2009
  • 32. Customizações •Facilidade na customização de: –Validadores –Conversores –Componentes de Interface –Renderizadores –Mensagens Monday, July 27, 2009
  • 33. Mudando o Default Monday, July 27, 2009
  • 34. Mudando o Default •Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é questão de uma linha de configuração. •A beans factory: porque não usar Spring do que managed beans? •Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax. Monday, July 27, 2009
  • 36. Implementações • Apache – MyFaces • Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra • Red Hat/JBoss – RichFaces – Ajax4JSF • Red Hat/JBoss – JBoss Seam • ICEsoft Technologies Inc. – ICEfaces • Oracle – Mojarra • Oracle – ADF Faces Monday, July 27, 2009
  • 38. O que é Web Service? Monday, July 27, 2009
  • 39. Web Services • Comunicação entre aplicações via INTERNET; • Mais informações? • Consulte o Wikipédia: http://pt.wikipedia.org/wiki/Web_service Monday, July 27, 2009
  • 41. CQ Teste Primeira Pergunta: O que é REST? Monday, July 27, 2009
  • 43. O que é REST? ? ? Monday, July 27, 2009
  • 45. Errado, a resposta certa É: Monday, July 27, 2009
  • 46. Web Services - REST Monday, July 27, 2009
  • 47. REST • REpresentational State Transfer (Transferência de Estado Representacional); • Este termo surgiu no ano de 2000; • Em uma tese de doutorado de Roy Fielding; • Baseado no protocolo HTTP; • POST, GET, PUT e DELETE (Menos o POST as demais são freqüentemente envolvidas com CRUD). • Cada recurso é direcionado através de sua URI; • Sintaxe Universal; • Mais simples; • Menos Overhead de protocolos. Monday, July 27, 2009
  • 48. REST • Utiliza Recursos (URI - Identificador Uniforme de Recurso); • Se comunicam através de uma interface HTTP; • Pode ser transmitido por diversos conectores, porém não poderá ver mais nada do que o seu pedido; • Assim não é necessário conhecer proxys, caches e etc. Monday, July 27, 2009
  • 49. Arquitetura REST http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  • 50. Declarativo http://brunopereira.org/webservicesrest-arquitetura/ Monday, July 27, 2009
  • 51. Código Rest com Jersey @Path("/paisesWS") public class PaisesRest { @GET @Produces("text/plain") public String getClichedMessage() { List<String> paises = new ArrayList<String>(); paises.add("======Listando alguns Paises via REST + Jersey======"); paises.add("n Brasil"); paises.add("n India"); paises.add("n Argentina"); paises.add("n Guatemala"); paises.add("n Estou no meu WebService sendo acessado"); return paises.toString(); } } Monday, July 27, 2009
  • 52. Alguns Frameworks • API REST para Java - JAX-RS: • http://jcp.org/aboutJava/communityprocess/final/jsr311/ index.html • GlassFish Jersey: • https://jersey.dev.java.net/ • JBoss RestEasy: • http://www.jboss.org/resteasy/ • Restlet: • http://www.restlet.org/ • Apache CXF: • Monday, July 27, 2009 http://cxf.apache.org/
  • 53. JSF & REST • Imagine que precise de tags em JSF para criar um Web Service REST como um ATOM, padrão que segue a mesma idéia de RSS. • Como faria? • É com você Rafinha... Monday, July 27, 2009
  • 55. Não faço a menor idéia e vocês aí da platéia? Alguma idéia? Monday, July 27, 2009
  • 57. Haaaaaa, acertou quem disse que há Tags para o JSF suportar Rest. Monday, July 27, 2009
  • 58. Tag Suport JSF/REST • RestFaces • https://restfaces.dev.java.net/ • Para RSS • RSS4JSF • http://code.google.com/p/rss4jsf/wiki/Usage • FaceRSS • http://rsslib4j.sourceforge.net • YARFRAW • http://yarfraw.sourceforge.net/ Monday, July 27, 2009
  • 60. Meninos e Meninas lembrem-se: Nem REST, nem JSF é uma solução perfeita, ou seja, No Silver Bullet. Monday, July 27, 2009
  • 62. É brincadeira viu, e se eu precisar usar em um aplicativo não JSF? Monday, July 27, 2009
  • 64. Fique frio, eu ainda não terminei, olhe agora... Monday, July 27, 2009
  • 65. Outros Frameworks e Linguagens • Struts2Rest • http://code.google.com/p/fulworx/ • SpringMVC+Restlet • http://www.dehora.net/journal/2007/11/19/java-rest/ • PHP • http://www.xml.lt/Resources/Framework Monday, July 27, 2009
  • 67. Vamos ver um exemplo. Monday, July 27, 2009
  • 68. Referências JSF: • Alguns poucos Sites - Pesquise no Google: • http://javawora.blogspot.com/search/label/JSF • http://groups.google.com.br/group/javasf/?pli=1 • http://www.rponte.com.br/2008/06/30/o-que-esperar-do-jsf-20/ • http://www.caelum.com.br • http://www.guj.com.br/java.tutorial.artigo.158.1.guj • http://java.sun.com/javaee/javaserverfaces/ • www.jcp.org • JSRs: 127; 252; 314. • Revistas: – Mundo Java nº: 21 e posteriores. – Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48 e posteriores. • Livros: – Faces in Action (Kito Mann – Manning, 2004); – JavaServer Faces (Hans Bergsten – O´Reilly, 2004); – Core JavaServer Faces (David Geary e Cay Horstmann). Monday, July 27, 2009
  • 69. Referências REST: • Alguns poucos Sites - Pesquise no Google: • http://blpsilva.wordpress.com/2008/04/24/apresentacao-sobre-web-services-rest/ • http://unfoldingtheweb.com/2009/07/20/to-rest-or-not-to-rest/ • http://iv.incubadora.fapesp.br/portal/doc/TutorialReST • http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm • http://pt.wikipedia.org/wiki/REST • http://www.megginson.com/blogs/quoderat/2005/03/09/public-rest-application-seniors-canada-online/ • http://www.markbaker.ca/blog//2005/04/14/#2005-04-amazon-next • http://jim.webber.name/2008/09/17/595957ef-63a2-4ff9-a477-43ea8db51cdd.aspx • http://www.infoq.com/interviews/jim-webber-qcon-london • http://www.devmedia.com.br/articles/viewcomp.asp?comp=7357 • http://wikis.sun.com/display/Jersey/Main • www.jcp.org • JSR: 311. • Revistas: – Mundo Java; – Java Magazine. • Livros: – Developing Enterprise Web Services: An Architect's Guide (James Webber e Sandeep Chatterjee); – RESTful Web Services (Leonard Richardson, Sam Ruby e David Heinemeier Hansson). Monday, July 27, 2009
  • 71. Fim Obrigado! eduardo.bregaida@gmail.com http://bregaida.com http://javawora.blogspot.com twitter: bregaida Monday, July 27, 2009