Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

Olá, tudo bem?

Nesse post comemorativo de 100.000 visitas será descrita uma aplicação web completa. O post de hoje utilizará as seguintes tecnologias: Tomcat7, JSF 2 (Facelets e Libraries) com Primefaces (utilizando AutoComplete), JPA / Hibernate (com relacionamento NxN), Login por Filter.

Caso você queira ver uma aplicação completa utilizando JSF + EJB + JPA + JAAS + JBoss 7 clique aqui.

Para o projeto de hoje você precisará dos artefatos abaixo (todos os JARs você encontra com o código fonte disponível na última página):

O banco utilizado foi o Postgres, mas você pode utilizar qualquer um. Basta alterar o driver e a url de conexão do arquivo persistence.xml.

Ao final desse post você irá encontrar o código fonte juntamente com as bibliotecas utilizadas no projeto.

O que será visto em cada página:

  • Página 02: Modelo mapeado com anotações JPA. Utilização do relacionamento NxN (@ManyToMany) , NamedQueries utilizando Join Fetch e Enum como atributo.
  • Página 03: DAO Genérico, controle de transação, utilizar métodos genéricos que preencham os parâmetros de uma query.
  • Página 04: Façades utilizando transações, utilizar método findReferenceOnly, cuidados ao utilizar o comando entityManager.merge().
  • Página 05: Filters.
  • Página 06: ManagedBeans. Injetar um ManagedBean dentro de outro, observações sobre @ViewScoped.
  • Página 07: JSFMessageUtil.
  • Página 08: Arquivos de configurações: log4j.properties, messages.properties.
  • Página 09: xhtml pages, Facelets.
  • Página 10: Primefaces AutoComplete, JSF Converter utilizando “forClass”.
  • Página 11: Facilitando o uso de CSS/javascript/imagens com JSF.
  • Página 12: Configurações “web.xml”.
  • Página 13: Práticas para um programa mais seguro.
  • Página 14: Executando a aplicação

A aplicação de hoje terá um cadastro de pessoas e cachorros onde apenas o ADMIN poderá cadastrar os cachorros. Antes de executar o projeto crie o banco de dados: “JSFCrudDB”.

179 Thoughts on “Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

  1. Hebert, no caso, seu eu nao quiser definir um Converter para cada class, de puder fazer um converter Generico, e definir no AutoComplete, neh?

    Mas no meu ex, esta acontecendo o seguinte

    GRAVE: java.lang.ClassCastException: MeuEntity cannot be cast to java.lang.String

    Tem ideia do que acontece?

    • uaihebert on May 2, 2013 at 9:15 pm said:

      Felipe, boa noite.

      Parece que o retorno do seu converter está errado (o que recebe String e return um Object). [=

      Infelizemente não tenho como analizar códigos agora, coloque no GUJ que se eu não ajudar, alguém o fará.

      Até mais. \o_

  2. Pingback: 1389 Ideias para aplicativos Android – GUJ | S60Aplicativos

  3. Cara, muito bom o projeto, e o tutorial!
    Parabéns pelo ótimo trabalho!

    Abraços!

  4. Olá Hebert, Excelente post!!!
    Eu segui todos os passos mas obtive o seguinte erro após passar pela tela de login

    javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: Could not initialize class com.dao.UserDAO
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at com.filter.LoginCheckFilter.doFilter(LoginCheckFilter.java:68)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:722)
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.dao.UserDAO
    at com.facade.UserFacade.(UserFacade.java:7)
    at com.mb.LoginMB.login(LoginMB.java:38)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.el.parser.AstValue.invoke(AstValue.java:278)
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    … 27 more

    Tem idéia di que possa ser?

    Desde já muito obrigado pela atenção

    ———————————–

    Consegui resolver. O Problema era no persistence.xml, tinha colocado o nome da base errado. Quem quiser dar uma conferida a aplicação está disponível em:
    http://54.232.193.142/JSFCrudApp
    Vlw

  5. Olá Hebert!! Teria como manda um link de como criar o projeto desde o início, configurando e etc?

    • uaihebert on April 12, 2013 at 8:10 pm said:

      Augusto, boa noite.

      Esse post que você comentou mostra isso.

      Na última página você encontra o código para download.

      Até mais.

  6. Já resolvi o problema, muito obrigado.

Comment navigation

 

Leave a Reply

Post Navigation