[APOSTILA] Tutorial JAVA com JSF 2.0, Facelts, Hibernate (JPA) , Spring 3.0 e PrimeFaces

102 respostas
W

Pessoal do GUJ,

Criei um tutorial para minha iniciação científica com os frameworks utilizados no título, como boa parte das minhas dúvidas durante o início da faculdade se resolveram aqui, como gratidão queria postar esse tutorial que podem ajudá-lo.
Ele ensina a criar um CRUD com as tecnologias citadas, tem o modo de configurá-las e resolução de alguns problemas que tive, os códigos são comentados durante o tutorial para que todos possam aprender a usar os frameworks e não somente ter uma aplicação funcionando e não entender nada dela.
Espero que gostem, qualquer coisa mande nos comentários.

A apostila é de 1 mega, por isso segue o link de download no MegaUpload:

http://www.megaupload.com/?d=3YEBFJC4

Foi utilizado Java EE (para ambiente Web) com os frameworks:
JSF 2.0; Facelets; Hibernate 3.5 com JPA 2.0; Spring 3.0; Primefaces 2.2.1 e foi utilizado também o Java Reflection

==UPDATE 19/01/12==
Como o MegaUpload saiu fora do ar a partir de hoje, segue link do rapidshare:
https://rapidshare.com/files/[telefone removido]/Tutorial_JAVA_Web_com_JSF_2.pdf

==UPDATE 06/02/12==
Estou tendo problemas com o Rapidshare, então estou enviando link do 4Shared:

102 Respostas

H

Parabéns pela iniciativa. [=

W

vlw pelo apoio jakefrog, espero que gostem

J

Obrigado por compartilhar :slight_smile:
Abraços

J

Bom dia,

Obrigado por compartilhar !

Interessante só me falta PrimeFaces 3.0 em vez de Primefaces 2.2.1 !

L

Valew pelo material.
Já estou lendo e estou achando ela bem explicadinha.

Parabens.

C

Muito obrigado , estou terminando de ver servlets e jsf , irei começar a estudar sua apostila.

F

Parabéns parceiro…Isso é muito bom pra nos iniciantes que não trabalhamos na areá e queremos conhecer a fundo o Java.
Valeu mesmo, Deus te abençoe.
Frederico.

M

Obrigado por compartilhar. =)
Para Janeiro teremos um projeto que envolve JSF e PrimeFaces, sera de grande ajuda seu material.

F

Wolky:
Pessoal do GUJ,

Criei um tutorial para minha iniciação científica com os frameworks utilizados no título, como boa parte das minhas dúvidas durante o início da faculdade se resolveram aqui, como gratidão queria postar esse tutorial que podem ajudá-lo.
Ele ensina a criar um CRUD com as tecnologias citadas, tem o modo de configurá-las e resolução de alguns problemas que tive, os códigos são comentados durante o tutorial para que todos possam aprender a usar os frameworks e não somente ter uma aplicação funcionando e não entender nada dela.
Espero que gostem, qualquer coisa mande nos comentários.

A apostila é de 1 mega, por isso segue o link de download no MegaUpload:

http://www.megaupload.com/?d=3YEBFJC4

Foi utilizado Java EE (para ambiente Web) com os frameworks:
JSF 2.0; Facelets; Hibernate 3.5 com JPA 2.0; Spring 3.0; Primefaces 2.2.1 e foi utilizado também o Java Reflection

Parabéns, dei uma olhada geral e parece que realmente ficou muito boa!

M

antes de tudo excelente material, comecei a ler para me atualizar, hoje estou num projeto com jsf 1.2 com rich faces mas jsf 2 com prime me parece realmente muito legal, por isso resolvi ler, li as primeiras paginas e reparei que é bastante detalhado (parabéns mesmo, até a página 15 é um material realmente bom, e eu sou criterioso ao dizer isso, não é a toa).

eu ia baixar o diretorio de libs mas ainda nãoo fiz por que preciso de um cliente SVN. Amanha vou providenciar isso.

D

Valeu cara, muito legal sua iniciativa.

Sou profissional de .Net mas ano que vem tenho como meta número um migrar para Java, sou de SP, estou em busca de alguns treinamentos então olhei na caelum, globalcode, essas escolas mais top, porém como trabalho e faço faculdade a noite não sobra tempo, e agora em época de férias não casa com minha agenda as datas dos cursos, tem a questão dos valores que pesam um pouco também e estou com viagem marcada para os Estados Unidos então economizando em tudo.

Então o jeito vai ser focar nos treinamentos disponibilizados online mesmo, e materiais como esse sempre ajudam, ainda mais que meu foco é esse, web, então estou em busca justamente de aprender essas tecnologias.

Quem tiver outras sugestões de material, cursos online, etc, agradeço.

abraço

B

Parabéns.

Estou lendo também, estou na página 30 e estou gostando muito. Tem apenas alguns problemas com o português. Mas nada muito relevante.

D

w0w is amazing. Muito bom o material parabéns cara…

D

Muito bom,
Parabéns.

L

Parabens Wolky

Obg por compartilhar conhecimentos,
Isso é nossa meta …

J

muito boa apostila

W

maior_abandonado:
antes de tudo excelente material, comecei a ler para me atualizar, hoje estou num projeto com jsf 1.2 com rich faces mas jsf 2 com prime me parece realmente muito legal, por isso resolvi ler, li as primeiras paginas e reparei que é bastante detalhado (parabéns mesmo, até a página 15 é um material realmente bom, e eu sou criterioso ao dizer isso, não é a toa).

eu ia baixar o diretorio de libs mas ainda nãoo fiz por que preciso de um cliente SVN. Amanha vou providenciar isso.

Então amigo, também já trabalhei com jsf 1.2 e richfaces. As mudanças no JSF 2.0 me agradaram bastante, e desde então venho trabalhando com ele, primefaces axo uma ótima interface rica, como o outro usuário ai falou, falta a 3.0, mas como a mais estável é a 2.2.1, opitei por ela, mas assim que sair a 3.0, se tudo der certo pretendo fazer outra apostila, se meu tempo der.

Vlw ai pelo apoio de todo mundo e desculpe os erros de português na apostila, fiz ela com pouto tempo e com pressa, qualquer correção pode mandar pra mim por aqui ou por e-mail que arrumo no tutorial.

xD

G

Wolky, Bom dia.

Parabéns pela documentação, acabei de fazer o download estou dando uma olhada esta muito bem organizada… parabéns mesmo.
E Parabéns por disponibilizar, por querer “dsitribuir” conhecimento a quem interesse! Continue assim.

Abraços

A

Fala ai amigão, Tudo Bem? primeiramente Parabéns pela iniciativa, só uma dúvida! eu estou usando BD MySQL com o jar especifico. A minha dúvida é:

o Jar org.springframework.jdbc-3.0.2.RELEASE.jar reconhecerá as informações MySQL? ou terei que baixar um jar especifico?

Atenciosamente.

W

alexandre.marques:
Fala ai amigão, Tudo Bem? primeiramente Parabéns pela iniciativa, só uma dúvida! eu estou usando BD MySQL com o jar especifico. A minha dúvida é:

o Jar org.springframework.jdbc-3.0.2.RELEASE.jar reconhecerá as informações MySQL? ou terei que baixar um jar especifico?

Atenciosamente.

Eai Alexandre, eu estava dando uma olhada no jar do spring citado, dentro dele mesmo tem uma classe para tratar o valor máximo de incremento do MySQL, de um modo bem grosseiro, esse jar seria apenas uma coletânia de exceptions e informações para o Spring operar melhor com o banco de dados (ta mto grosseiro msm).
Mas fazendo as devidas alterações no jdbc.properties e no spring.xml tem que funcionar.
Qualquer erro posta ai que tento ajudá-lo.

E, novamente, obrigado pelo apoio.

W

Estava criando coragem para partir pro Java web. Vou começar por aqui. Valeu. :slight_smile:

H

Wolky, muito obrigado pelo material de ótima qualidade.

Eu estava precisando muito de material atual e bem explicado para aprender JSF, Spring e Prime, e seu material junto com os posts do Saab estão sendo muito úteis.

Li ambos e fui construindo a aplicação do portal virtual, mas quando rodo, o index redireciona para o template.jsf só que o mesmo não é encontrado. O template.xhtml está na pasta template, as configurações do web.xml aparentemente estão corretas.

Onde posso ter errado?

Segue a mensagem de erro:

The requested resource (/template/template.jsf not found) is not available.

Muito obrigado.

W

Henrique Nunes:
Wolky, muito obrigado pelo material de ótima qualidade.

Eu estava precisando muito de material atual e bem explicado para aprender JSF, Spring e Prime, e seu material junto com os posts do Saab estão sendo muito úteis.

Li ambos e fui construindo a aplicação do portal virtual, mas quando rodo, o index redireciona para o template.jsf só que o mesmo não é encontrado. O template.xhtml está na pasta template, as configurações do web.xml aparentemente estão corretas.

Onde posso ter errado?

Segue a mensagem de erro:

The requested resource (/template/template.jsf not found) is not available.

Muito obrigado.

Amigo, isso acontece as vezes mesmo, normalmente é problema do tomcat, certifique-se que você escolheu a opção do “Use Tomcat installation” que citei no tutorial, se sim, vá no diretório do tomcat em wtpwebapps/portalvirtual/template e veja se a pagina template.xhtml está lá, se não estiver, peça, no tomcat, para limpar o workspace e de “Clean” tanto no project, quanto no tomcat, depois reinicie o servidor. Normalmente com isso volta ao normal, se problema persistir, reveja se vc colocou a especificação de “.jsf” para mapear a Faces Servlet, se tem a tag e se os arquivos estão na pastas certas (o arquivo template.xhtml dentro da pasta template dentro do WEB-CONTENT)
Qualquer coisa posta mais detalhes que tento ajudar.

H

Descobri o problema, a pasta template estava dentro da pasta WEB-INF ¬¬

Tudo funcionando perfeitamente =D

Obrigado novamente Wolky.

W

Henrique Nunes:
Descobri o problema, a pasta template estava dentro da pasta WEB-INF ¬¬

Tudo funcionando perfeitamente =D

Obrigado novamente Wolky.

hehehe
precisando estamos ai xD

J

cara pode me enviar por Email
sempre quando acesso o Megaupload da erro de limite excedido
alguém está baixando e eu não posso baixar nada pelo mega
poderia me enviar por Email se falamos por MP pode ser?

J

opa consegui baixar o apostila
meus parabéns meus colegas novatos vão adorar
e vou aprender mais ainda :smiley:

T

Wolky:
Henrique Nunes:
Wolky, muito obrigado pelo material de ótima qualidade.

Eu estava precisando muito de material atual e bem explicado para aprender JSF, Spring e Prime, e seu material junto com os posts do Saab estão sendo muito úteis.

Li ambos e fui construindo a aplicação do portal virtual, mas quando rodo, o index redireciona para o template.jsf só que o mesmo não é encontrado. O template.xhtml está na pasta template, as configurações do web.xml aparentemente estão corretas.

Onde posso ter errado?

Segue a mensagem de erro:

The requested resource (/template/template.jsf not found) is not available.

Muito obrigado.

Amigo, isso acontece as vezes mesmo, normalmente é problema do tomcat, certifique-se que você escolheu a opção do “Use Tomcat installation” que citei no tutorial, se sim, vá no diretório do tomcat em wtpwebapps/portalvirtual/template e veja se a pagina template.xhtml está lá, se não estiver, peça, no tomcat, para limpar o workspace e de “Clean” tanto no project, quanto no tomcat, depois reinicie o servidor. Normalmente com isso volta ao normal, se problema persistir, reveja se vc colocou a especificação de “.jsf” para mapear a Faces Servlet, se tem a tag e se os arquivos estão na pastas certas (o arquivo template.xhtml dentro da pasta template dentro do WEB-CONTENT)
Qualquer coisa posta mais detalhes que tento ajudar.

Wolky, parabéns pelo material. Ficou muito bom mesmo.

Ve se vc consegui me ajudar estou tendo o mesmo problema acima, mas conferi tudo que vc falou e ele continua com erro.
Fucei um bocado, mas não consegui resolver.
Mesmo qnd tento acessar CadReino.jsf não funciona. Acho que deve ter alguma configuração errada do Faces.

Qualquer ajuda sera bem vinda.
Vlw!

W

T1234:

Wolky, parabéns pelo material. Ficou muito bom mesmo.

Ve se vc consegui me ajudar estou tendo o mesmo problema acima, mas conferi tudo que vc falou e ele continua com erro.
Fucei um bocado, mas não consegui resolver.
Mesmo qnd tento acessar CadReino.jsf não funciona. Acho que deve ter alguma configuração errada do Faces.

Qualquer ajuda sera bem vinda.
Vlw!

o arquivo template.xhtml está na pasta wtpwebapps?
reveja o arquivo web.xml, se houver espaço entre as palavras da tag pode haver erro, exemplo: < wellcome-file-list>, sendo que o principal para executar a página em jsf é:

<!-- JSF configuration --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>

verifique a versão do tomcat, tente excluir o projeto dentro da pasta wtpwebapps, fechar o eclipse, dar clean project e clean no tomcat e ai sim iniciar o servidor, de todo jeito preciso de mais informações para tentar te ajudar

T

Wolky:
T1234:

Wolky, parabéns pelo material. Ficou muito bom mesmo.

Ve se vc consegui me ajudar estou tendo o mesmo problema acima, mas conferi tudo que vc falou e ele continua com erro.
Fucei um bocado, mas não consegui resolver.
Mesmo qnd tento acessar CadReino.jsf não funciona. Acho que deve ter alguma configuração errada do Faces.

Qualquer ajuda sera bem vinda.
Vlw!

o arquivo template.xhtml está na pasta wtpwebapps?
reveja o arquivo web.xml, se houver espaço entre as palavras da tag pode haver erro, exemplo: < wellcome-file-list>, sendo que o principal para executar a página em jsf é:

<!-- JSF configuration --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>

verifique a versão do tomcat, tente excluir o projeto dentro da pasta wtpwebapps, fechar o eclipse, dar clean project e clean no tomcat e ai sim iniciar o servidor, de todo jeito preciso de mais informações para tentar te ajudar

Wolky,
fiz o q vc falou, mas não funcionou.
Estou usando algumas bibliotecas com versões diferentes das suas pq não consegui baixar do site. Será que teria como vc disponibilizar as libs?

Notei que a mensagem que está aparecendo pra mim (“The requested resource (/tisi.teste/templates/template.jsp) is not available.”) a extensão é diferente na minha aparece jsp e não jsf.

VLW

W

T1234:

Wolky,
fiz o q vc falou, mas não funcionou.
Estou usando algumas bibliotecas com versões diferentes das suas pq não consegui baixar do site. Será que teria como vc disponibilizar as libs?

Notei que a mensagem que está aparecendo pra mim (“The requested resource (/tisi.teste/templates/template.jsp) is not available.”) a extensão é diferente na minha aparece jsp e não jsf.

VLW

Não entendi o por que dele falar tisi.teste antes das pastas templates, e vc criou páginas xhtml ou jsp? tente acessar manualmente as páginas, tipo: localhost:8080/portal-virtual/templates/template.jsf. Você tem certeza que tem os códigos que coloquei no comentário anterior no web.xml?

tenta adicionar isso aqui também, pra ve se para de chamar o jsp:

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>

vá no index.html na raiz do projeto e confirme se está desse jeito:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="refresh" content=" 0 ;url=template/template.jsf" />
</head>

e o link das libs no megaupload é: http://www.megaupload.com/?d=XPHVECJL

T

Wolky:
T1234:

Wolky,
fiz o q vc falou, mas não funcionou.
Estou usando algumas bibliotecas com versões diferentes das suas pq não consegui baixar do site. Será que teria como vc disponibilizar as libs?

Notei que a mensagem que está aparecendo pra mim (“The requested resource (/tisi.teste/templates/template.jsp) is not available.”) a extensão é diferente na minha aparece jsp e não jsf.

VLW

Não entendi o por que dele falar tisi.teste antes das pastas templates, e vc criou páginas xhtml ou jsp? tente acessar manualmente as páginas, tipo: localhost:8080/portal-virtual/templates/template.jsf. Você tem certeza que tem os códigos que coloquei no comentário anterior no web.xml?

tenta adicionar isso aqui também, pra ve se para de chamar o jsp:

<context-param>
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
    <param-value>.xhtml</param-value>
</context-param>

vá no index.html na raiz do projeto e confirme se está desse jeito:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="refresh" content=" 0 ;url=template/template.jsf" />
</head>

e o link das libs no megaupload é: http://www.megaupload.com/?d=XPHVECJL

Vlw cara!

Estava faltando justamente definir o DEFAULT_SUFFIX no web.xml.

Valeu mesmo! Você ajudou bastante.

W

T1234:

Vlw cara!

Estava faltando justamente definir o DEFAULT_SUFFIX no web.xml.

Valeu mesmo! Você ajudou bastante.

Normalmente não é necessário essa citação, o compilador deveria saber que está usando XHTML em vez de JSP, mas as vezes isso acontece xD
De nada, precisando só falar

T

Olá, Pessoal
Daniel_MV segue abaixo alguns links bons para estudos:
Video Aulas Java - Download
CRUD Hibernate + Primafaces
Curso Hibernate + JSF + Primefaces
Cursos Online - Java

Espero que ajude.

Abraço

Thiago A. Teixeira

T

Bom Dia , Wolky

Parabéns pelo material!!! Vai ser bastante útil!

Abraço

Thiago A. Teixeira

T

Wolk,

estou com mais um problema. Ve se vc consegui me ajudar.
Quando eu estava usando as libs que eu baixei separadamente, pela net, a aplicação iniciava corretamente no servidor, mas as tags do primefaces não apareciam na tela, nem no IE nem no Chrome.
Então troquei para as libs que vc me passou ai aparece o seguinte erro:
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

Não sei o que fazer. Me dá uma ajuda ai cara por favor.

Vlw

W

T1234:
Wolk,

estou com mais um problema. Ve se vc consegui me ajudar.
Quando eu estava usando as libs que eu baixei separadamente, pela net, a aplicação iniciava corretamente no servidor, mas as tags do primefaces não apareciam na tela, nem no IE nem no Chrome.
Então troquei para as libs que vc me passou ai aparece o seguinte erro:
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

Não sei o que fazer. Me dá uma ajuda ai cara por favor.

Vlw

Cara, vc trocou as libs certo? meu conselho, muda de workspace e construir o projeto tudo denovo, pois essa classe já existe nas bibliotecas do jsf, se ele não encontra é problema com o Eclipse msm, normalmente quando se troca bibliotecas da isso, tenta ai, muda de workspace, abre 2 eclipses e vai no CTRL + C, CTRL + V e vê que que da.

A

depois da queda do megaupload, o material está disponível em algum outro lugar?
obrigado

W

ArturSampaio:
depois da queda do megaupload, o material está disponível em algum outro lugar?
obrigado

==UPDATE 19/01/12==
Como o MegaUpload saiu fora do ar a partir de hoje, segue link do rapidshare:
https://rapidshare.com/files/[telefone removido]/Tutorial_JAVA_Web_com_JSF_2.pdf

J

Parabéns meu caro. Muito boa. Valeu mesmo.

J

Muito legal tua apostila, mas como faço para baixar a pasta “libs do CODE” que cita na configuração do projeto?

W

o CODE é um repositório SVN, vc precisa de um client pra baixa tudo ok, o que uso é o TURTOISE, muito bom e baixa tudo ok, mas la pelo site do code msm, vc baixa acho que “raw file” e traz cada .jar, mas aconselho baixar um client SVN.

J

Obrigado, Diego.
Abraços.

J

muito obrigado pela apostila
está ajudando muito

L

Que bom que ressuscitaram esse tópico,

vai ser de grande ajuda essa apostila, parabéns pela iniciativa Wolky.

R

Antes de mais nada muito obrigado Wolky pelo tutorial excelente!

Eu estou com um problema na aplicação. Troquei o driver e referencias para o banco mysql.
em jdbc

driverClassName=com.mysql.jdbc.Driver

em spring.xml

<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

Eu cheguei ao ponto de desistir de conferir e copiei todo o projeto para não ter chance de erros!

Tive problemas para baixar as lib do site “CODE”, sempre viam com tamanho de 29kb, mas depois baixei com o Orbit os tamanhos estão batendo. (caso alguem possa subir elas completas eu estaria mais seguro quanto a isso. :slight_smile: )

Bem vamos ao erro. Eu consigo gravar o reino, mas quando clico em listar ele só me mostra um reino sem nome que o botão editar( abre o editor, mas não grava) e excluir não funcionam e me retornam o erro:

javax.servlet.ServletException: /pages/CadReino.xhtml @51,53 value="#{reinoMB.entity.reino}": Target Unreachable, 'entity' returned null
e

javax.servlet.ServletException: java.lang.IllegalArgumentException: attempt to create delete event with null entity javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

A busca depois que alguma parte dá erro não funcionar e quando funciona só me traz resultado se eu souber o reino que quero procurar:

javax.servlet.ServletException: /pages/CadReino.xhtml @51,53 value="#{reinoMB.entity.reino}": Target Unreachable, 'entity' returned null javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

O botão filo não funciona depois de dar algum erro. Antes de dar erro ele não lista, não busca e o gravar não mostra os reinos cadastrados.

vou anexar os txt dos erros completos.

---------------------------------------------------------------------EDIT---------------------------------------------------------------------------------------
Uma coisa que eu acho que pode ser, o modo de busca do SQL é diferente do MySql?? Porque com eu disse(mas não expressei bem), quando eu clico em listar ele aparece um item só, que o botão editar e excluir não funciona. O que aparenta ser para mim é que ele não tá listando, então o editar, excluir e selecionar do filo não abre! Vou procurar sobre isso se conseguir algo eu posto. :?

W

Primeiramente queria agradecer a todos os leitores pelos elogios e que bom que o tutorial o estão ajudando.
Segundo queria pedir desculpa pela demora em responder rpsouza, ando muito ocupado. Você fez muitas perguntas e citações, então vou respondendo por partes.

rpsouza441:
Antes de mais nada muito obrigado Wolky pelo tutorial excelente!
Tive problemas para baixar as lib do site “CODE”, sempre viam com tamanho de 29kb, mas depois baixei com o Orbit os tamanhos estão batendo. (caso alguem possa subir elas completas eu estaria mais seguro quanto a isso. :slight_smile: )

O CODE tem um probleminha de baixar arquivos pesados pelo próprio site, para baixar os arquivos de forma segura é bom utilizar um CLIENT SVN, eu recomendo o Turtoise.

Se não me engano, esse erro é que não foi instanciado o Reino, não tem valor nenhum la na entidade então não é possivel relacionar os campos, isso deve ser analisado no botão editar/listar que tem a tag <f:setPropertyActionListener /> responsável por pegar a entidade selecionada na lista e passar para o atributo que representa uma só entidade (em vez da lista) na visão.

O arquivo anexado busca.txt contém o erro:

javax.servlet.ServletException: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key ----eRRo-----_Busca javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
esse erro é porque no arquivo messages.properties não tem a chave ----eRRo-----Busca… Se não me falha a memória, o fluxo desse erro é o seguinte: você pediu para efetuar a busca, mas não digitou nada para ser buscado, lá no validador não deixo chamar a ação se você não passou nenhum valor, setando uma mensagem na visão de que: “Você tem que digitar algum valor de busca” ou algo parecido, lembro também que toda mensagem de erro eu busco no bundle pela chave erro{nomeDoErro} sendo que erro_ é fixo, e {nomeDoErro} vem como parametro, no meu caso minha mensagem de erro tem a chave: erro_Busca, e esse erro descreve exatamento que você não tem a chave: ----eRRo-----_Busca no bundle

O arquivo editar.txt é o erro que citei mais acima e no arquivo deletar.txt segue o mesmo padrão de erro do editar, é problema na tag <f:setPropertyActionListener />
pode ser o ciclo do JSF também, as vezes você está chamando a função de editar/deletar primeiro que a do <f:setPropertyActionListener /> fazendo com que esteja null a entidade não podendo executar a ação.

Indico você ler um pouco sobre ResourceBundle/internacionalização via arquivo .properties para corrigir o erro do busca.txt
Se não conseguir, preciso de mais detalhes, estou andando muito sem tempo e estou mexendo com 4 projetos, não me lembro muito bem do fluxo da arquitetura do tutorial que escrevi, se possível, envie o .war com código fonte por e-mail para analisar melhor

R

Obrigado pela resposta, e sai dessa de pedir desculpa. Fico muito feliz de vc ter vir aqui para me ajudar :smiley:

Nossa na busca eu vacilei feio! Eu tinha colocado esse —eRRo— pra eu poder identificar mais facil quando saisse a tela de erro! Não me passou pela cabeça do tratamento do erro pelo jsf, vou ler mais sobre ResourceBundle. :oops:

Quanto as outras funções, eu até fiz edit aqui no post para dizer que estava achando que de alguma forma não estava buscando a entidade. Será que muda os “search’s” do hibernate por mudar de sql para mysql? Tudo que eu alterei no projeto foi esse eRRo, as especificações (que mostrei) para o hibernate conectar no mysql e o pacote do projeto de br.ueg.portal para br.com.tutorial.

Corrigi o —eRRo— e agora o JSF lança a mensagem na tela.

Anexei o war sem a lib.

W

rpsouza441:

Quanto as outras funções, eu até fiz edit aqui no post para dizer que estava achando que de alguma forma não estava buscando a entidade. Será que muda os “search’s” do hibernate por mudar de sql para mysql? Tudo que eu alterei no projeto foi esse eRRo, as especificações (que mostrei) para o hibernate conectar no mysql e o pacote do projeto de br.ueg.portal para br.com.tutorial.

Anexei o war sem a lib.

Essa busca eu vou ver direitinho o problema dela mais tarde, hoje a noite executo o war e vejo qual o problema pra ti e te mando resposta no máximo até amanhã.
Em questão do hibernate, ele foi feito para executar qualquer SQL independente de qual banco de dados você use, se no dialeto vc disse que é o MySQL o próprio hibernate tem que se virar e criar uma sql executavel pelo MySQL, então não acho que seja o hibernate, de todo jeito, quando for analisar o projeto vou debugar ele e ler a sql que está gerando, tenho o mysql aqui tb e vou tentar executar ela direto no banco para tirar essa sua dúvida.

R

Com muita vergonha eu digo que o problema foi a minha alteração do termo “erro_” para “eRRo_” pq eu queria achar facilmente o erro na tela, e não tinha prestado atenção sobre o ResourceBundle.
Agora o problema de não estar rodando o projeto é por causa do meu computador! :oops: Testei em outros dois computadores e eles rodaram perfeitamente. Eu já desinstalei e instalei, coloquei versão 64b e 32b e nada! Só me resta formatar…

Muito Obrigado Wolky pelo tutorial e por esclarecer minhas duvidas! 8)

A

vi a apostila meio por cima, e gostei… vou ler ela e acompanhar no final de semana com mais tempo…

eu estou precisando fazer um projeto na faculdade e preciso implementar um sistema de autenticação… seria possível implementar neste “projeto” da apostila?
iria precisar de muita coisa?

W

alandiniz:
vi a apostila meio por cima, e gostei… vou ler ela e acompanhar no final de semana com mais tempo…

eu estou precisando fazer um projeto na faculdade e preciso implementar um sistema de autenticação… seria possível implementar neste “projeto” da apostila?
iria precisar de muita coisa?

Sistema de autenticação é a coisa mais simples de se fazer, ainda mais nesse projeto,
você tem a opção de fazer essa atenticação com o Spring Security ou com Spring AOP, os dois necessitam estudo e pode ser um pouco complexo, mas dominando-os são otimos sistemas de autenticação, com bastante segurança (principalmente o Spring Security)
Porém, como se trata de um projeto de faculdade, te recomendo fazer um sistema de autenticação com Filter, você apenas cria uma classe que extende Filter e verificar se ele está tentando acessar alguma pasta de arquivos que somente quem deve estar logado deva acessar, se eles estiver tentanto, você redireciona ele para o login (caso não logado), caso logado deixa passar.
Vá no web.xml e fale que ele é um filtro pra pasta citada
Segue um exemplo que fiz para um projeto da faculdade, o nome do projeto era RCDEx e não permitia ele a acessar nada que estava dentro da pasta “pages”, ou seja, unica pagina que podia acessar era a index e a login que ficavam fora de “pages”:

package br.com.rcdex.view.servlets;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.com.rcdex.model.Usuario;

/**
 * Filter for login, any access for all pages, come to this filter.
 * 
 * @author Diego
 * 
 */
public class LoginFilter implements Filter {

	@Override
	public void destroy() {
	}

	/**
	 * Method that filter the request and if logged, continue with the request,
	 * if not force the user to login.
	 * 
	 * @param ServletRequest
	 *            , ServletResponse, FilterChain
	 */
	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		HttpServletResponse response = (HttpServletResponse) resp;

		HttpSession session = request.getSession(true);
		if (session.getAttribute("uri") == null) {
			String uri = request.getRequestURI().toString().split("/RCDEx/")[1];
			uri = uri.split(".jsf")[0];
			session.setAttribute("uri", uri);
		}

		if (!this.isLogged(request)
				&& !request.getRequestURL().toString().contains("login.jsf")) {
			response.sendRedirect(request.getContextPath() + "/inicio.jsf");
		} else {
			try {
				chain.doFilter(req, resp);
			} catch (Exception e) {
				response.sendRedirect(request.getContextPath() + "/inicio.jsf");
			}
		}

	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}

	/**
	 * Method that verify if user is logged
	 * 
	 * @param HttpServletRequest
	 * @return if the user is logged or not
	 */
	private boolean isLogged(HttpServletRequest request) {
		boolean retorno = false;
		HttpSession session = request.getSession(true);
		if (session != null) {
			Usuario usuario = (Usuario) session.getAttribute("usuario");
			if (usuario != null) {
				retorno = true;
			}
		}
		return retorno;
	}

}

E no web.xml:

<filter>
    <filter-name>Login Filter</filter-name>
    <filter-class>br.com.rcdex.view.servlets.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Login Filter</filter-name>
    <url-pattern>/pages/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>ERROR</dispatcher>
  </filter-mapping>

Espero ter ajudado,

E rpsouza, precisando é só falar

A

Olá Wolky, obrigado pela sua resposta :smiley:

poderia esclarecer algumas dúvidas, de possível?

1- o que significa “uri” ?

2- nessa linha Usuario usuario = (Usuario) session.getAttribute(“usuario”);
Obviamente eu tenho que ter uma classe de entidade Usuario.class, mais como realmente funciona akele metodo ali de login… o que significa o getAttribute(“usuario”); quais os atributos ele precisa ter?

----edit------esqueci de mencionar—
o site vai ter 3 níveis (roles)
1-publico que eh a pasta raiz
2- usuário registrado que vai ser /user
3- admin que tem acesso a /adm

W

URI é o endereço do site, por exemplo, o meu endereço do projeto era localhost:8080/RCDEX/ (isso é a index que ficava fora do pages)
a URI retorna /RCDEx, se tiver na URI o /pages é que ele está tentando acessar páginas que devem ser para usuários autenticados.

Cara eu só mostrei a lógica de se fazer um Filtro, tem muito mais coisa ai, Usuário é uma classe POJO que eu criei para espelhar o banco de dados, o getAttribute é um método do HttpSession, que vai na sessão e busca pelo atributo que você passou por parâmetro, nesse caso, eu busco na sessão o “usuário” e ele traz uma instancia do mesmo já que eu o setei.
Os métodos estão comentados, o isLogged ve se o usuário está na sessão, se estiver é e for o mesmo que ele está digitando, é que ele já está logado, então não precisa passar pelo filtro
o resto é com o doFilter, se não estiver compreendendo ainda, esse site explica bem legal como usá-lo: http://www.devmedia.com.br/utilizando-servlet-filter-com-javaserver-faces/5331

O controle você irá fazer dentro do doFilter, verificar de onde está vindo, uma dica é por exemplo, criar no banco um atributo booleano que representa se ele é admin ou não, quando você trazer o usuário do banco você verifica esse booleano se ele estiver tentando acessar uma página de admin, se ele estiver false, então não deixe ele entrar.

Tente ler mais sobre o Filter, o resto é lógica

B

Valeu Mestre.

Abs.

R

Nossa essa parada de validação era o próximo assunto que iria pesquisar para aprender! vlw Wolky

Eu to quebrando a cabeça com uma função que estou tentando colocar. Eu transportei o programa para uma inscrição.
Está com 3 tabelas. Curso, inscrito e inscrição(ManyToMany sem atributos, tem uma PK e duas FK de curso e inscrito).
Eu estou tentando fazer é: o inscrito digita o CPF e esse é validado (achei no GUJ um código que faz isso) e se existir esse CPF no banco abre o “formCad” em modo editar senão abre em modo adicionar.

A minha dificuldade é dizer para o jsf que essa busca é para abrir o editar da entidade, pois o find que o jsf usa mostra uma lista dos encontrados(como já passou pelo validador de cpf só pode existir um).
Alguém tem alguma dica de como consigo fazer isso?

====================EDIT=========================

Pensei em uma solução, foi fazer no jsf a validação do que acontecer, vai ser mais menos assim:

if(CPF = ok) abre a pagina de cadastro

na pagina de cadastro:

if(find.CPF = ok) abre a "busca" do inscrito (output) else abre o cadastrar inscrito (input)

Deve existir outra forma mais limpa, mas essa vai servir :lol:

:roll: as vezes eu caio tão fundo que esqueço do básico

R

Cara me desculpa por tanta duvida, mas já pesquisei e não consegui achar nada.

Tem como fazer um tabela com chave primaria composta nesse modelo?
Como a entity tem que ter a getId(), eu tropecei e não sei o que fazer

C

Boa Iniciava, to fazendo o download agora pra conferir o material, muito obrigado…

W

rpsouza441:
Cara me desculpa por tanta duvida, mas já pesquisei e não consegui achar nada.

Tem como fazer um tabela com chave primaria composta nesse modelo?
Como a entity tem que ter a getId(), eu tropecei e não sei o que fazer

Sim, você criar uma nova classe Entity que adeque ao seu modelo, por exemplo:
Crie a ComposedEntity que extende Entity, dentro dela você crie um atributo lá que represente sua segunda (ou mais) chave primária, ai vai de você verificar se há a necessidade de criar um controlador novo para isso
Esse é um caso que foge a regra padrão do exemplo, basta então adicionar as novas “regras de negócio”, que herda o que era pra ser utilizado e adiciona os métodos específicos, todo jeito você também terá que criar um ComposedManagedBean para saber controlar e editar essas chaves primárias.

O foco da arquitetura (mesmo sendo muito simplória) é que seja necessário criar apenas o modelo e a visão para fazer CRUD simples, as novas regras herdam as classes “genéricas” e adicionam suas especificidades. Como você pode ter mais de um entidade com chave composta, crie a classe abstrata para ela.

Agora andei lendo sobre chave composta (não costumo utilizar) e pessoal vem reclamando dela no hibernate, de uma olhada nesses comentários:


http://javafree.uol.com.br/topic-5839-Chave-composta-no-mapeamento-HIbernate.html

E desculpe pela demora em responder

W

rpsouza441:
Nossa essa parada de validação era o próximo assunto que iria pesquisar para aprender! vlw Wolky

Eu to quebrando a cabeça com uma função que estou tentando colocar. Eu transportei o programa para uma inscrição.
Está com 3 tabelas. Curso, inscrito e inscrição(ManyToMany sem atributos, tem uma PK e duas FK de curso e inscrito).
Eu estou tentando fazer é: o inscrito digita o CPF e esse é validado (achei no GUJ um código que faz isso) e se existir esse CPF no banco abre o “formCad” em modo editar senão abre em modo adicionar.

A minha dificuldade é dizer para o jsf que essa busca é para abrir o editar da entidade, pois o find que o jsf usa mostra uma lista dos encontrados(como já passou pelo validador de cpf só pode existir um).
Alguém tem alguma dica de como consigo fazer isso?

====================EDIT=========================

Pensei em uma solução, foi fazer no jsf a validação do que acontecer, vai ser mais menos assim:

if(CPF = ok) abre a pagina de cadastro

na pagina de cadastro:

if(find.CPF = ok) abre a "busca" do inscrito (output) else abre o cadastrar inscrito (input)

Deve existir outra forma mais limpa, mas essa vai servir :lol:

:roll: as vezes eu caio tão fundo que esqueço do básico

rp, tente não usar ManyToMany no hibernate, crie uma tabela auxiliar e todas serão OneToMany ou ManyToOne, tipo… Pessoa e categoria é um relacionamento N para N, crie então o pessoa_categoria, que pessoa é 1 para N no pessoa_categoria e o pessoa_categoria é 1 para N para categoria… não sei se consegui explicar direito, mas de uma pesquisada sobre.

Tente por essa validação retorno do control, toda négocio fica nele, mas o control acessar direto a visão é meio tenso, traga um retorno ou lance uma Exception que você criou para tratar esse fluxo de dados, dentro do managedBean você verifica se ele deu exceção com try catch, e se deu, vc sabe que o CPF não está ok.

Essas 2 semanas que se seguem estarei muito ocupado com meu TCC e iniciação científica, qualquer dúvida mandem por e-mail, posso até postar a resposta aqui para ajudar aos outros que tiverem mesma dúvida, a diferença é que acesso diariamente meu e-mail, já o forum não.

R

Wolky:

Sim, você criar uma nova classe Entity que adeque ao seu modelo, por exemplo:
Crie a ComposedEntity que extende Entity, dentro dela você crie um atributo lá que represente sua segunda (ou mais) chave primária, ai vai de você verificar se há a necessidade de criar um controlador novo para isso
Esse é um caso que foge a regra padrão do exemplo, basta então adicionar as novas “regras de negócio”, que herda o que era pra ser utilizado e adiciona os métodos específicos, todo jeito você também terá que criar um ComposedManagedBean para saber controlar e editar essas chaves primárias.

O foco da arquitetura (mesmo sendo muito simplória) é que seja necessário criar apenas o modelo e a visão para fazer CRUD simples, as novas regras herdam as classes “genéricas” e adicionam suas especificidades. Como você pode ter mais de um entidade com chave composta, crie a classe abstrata para ela.

Agora andei lendo sobre chave composta (não costumo utilizar) e pessoal vem reclamando dela no hibernate, de uma olhada nesses comentários:


http://javafree.uol.com.br/topic-5839-Chave-composta-no-mapeamento-HIbernate.html

E desculpe pela demora em responder

Eu tenho lido bastante sobre isso, dizem que na própria documentação do hibernate fala que não é recomendado usar. Eu vou ver se crio uma regra como alternativa, ainda mais que é somente uma tabela que precisa da “função” de chave composta.
Eu cheguei a conseguir a colocar sem criar um compositeEntity ( mas foi com @IdClass), mas na hora de gravar tava gerando uma coluna nova, e como já tinha lido sobre essas reclamações da composite, deixei de mão mesmo.

Eu estou tentando fazer agora é uma Façade para manipular dois beans para poder persistir eles ao mesmo tempo, sendo que o segundo tem dependência do primeiro para ser persistido. Criar a façade seria o ideal? Se eu conseguir gerar eu posto o código que eu avancei aqui!

R

Wolky:
rp, tente não usar ManyToMany no hibernate, crie uma tabela auxiliar e todas serão OneToMany ou ManyToOne, tipo… Pessoa e categoria é um relacionamento N para N, crie então o pessoa_categoria, que pessoa é 1 para N no pessoa_categoria e o pessoa_categoria é 1 para N para categoria… não sei se consegui explicar direito, mas de uma pesquisada sobre.

Tente por essa validação retorno do control, toda négocio fica nele, mas o control acessar direto a visão é meio tenso, traga um retorno ou lance uma Exception que você criou para tratar esse fluxo de dados, dentro do managedBean você verifica se ele deu exceção com try catch, e se deu, vc sabe que o CPF não está ok.

Essas 2 semanas que se seguem estarei muito ocupado com meu TCC e iniciação científica, qualquer dúvida mandem por e-mail, posso até postar a resposta aqui para ajudar aos outros que tiverem mesma dúvida, a diferença é que acesso diariamente meu e-mail, já o forum não.

Eu estava indo por essas paginas que ta bem explicadinho:
http://www.wbotelhos.com.br/2011/11/06/hibernate-relacionamento-manytomany-sem-atributos/
http://www.wbotelhos.com.br/2011/12/06/hibernate-relacionamento-manytomany-com-atributos/
http://www.wbotelhos.com.br/2012/01/17/hibernate-relacionamento-manytomany-com-atributos-e-chave-composta/

Gerar ManytoMany é ruim?
É que eu comecei na ligação mais difícil e não vi o ManyToMany funcionando ainda.

W

rpsouza441:

Eu tenho lido bastante sobre isso, dizem que na própria documentação do hibernate fala que não é recomendado usar. Eu vou ver se crio uma regra como alternativa, ainda mais que é somente uma tabela que precisa da “função” de chave composta.
Eu cheguei a conseguir a colocar sem criar um compositeEntity ( mas foi com @IdClass), mas na hora de gravar tava gerando uma coluna nova, e como já tinha lido sobre essas reclamações da composite, deixei de mão mesmo.

Eu estou tentando fazer agora é uma Façade para manipular dois beans para poder persistir eles ao mesmo tempo, sendo que o segundo tem dependência do primeiro para ser persistido. Criar a façade seria o ideal? Se eu conseguir gerar eu posto o código que eu avancei aqui!

Em questão da Facade, pode ser uma ideia, mas no seu caso eu axo que é melhor herdar o genericDAO e dentro do método desabilitar o autoCommit e fazer as várias operações dentro do método depois dar o commit, não sei os métodos certinhos pra isso…
Não lembro também da arquitetura do projeto porque estou evoluindo ela desde que fiz o tutorial, não sei se ela tem o GenericControl que pega mais ou menos a ideia do Facade, só que adiciona vários métodos de reflexão…

R

Não sei se estou fazendo algo errado aqui. Pelo que li o “isEmpty(entity)” procura a annotation RequiredField e se tiver ele verifica se o campo está vazio. Mas eu até tirei todos os required field’s do modelo e ainda assim não aceita tentar gravar no banco com valores vazios., ou seja, sempre pede para preencher todos os campos ( lançando um erro_).

A unica diferença da apostila e do meu código é na interface required field eu adicionei o import “java.lang.annotation.ElementType” pois o eclipse pediu.

Aqui o codigo do isEmpty

@SuppressWarnings("rawtypes") public boolean isEmpty(Entity entity) { clean(); boolean empty = false; Class entityClass = entity.getClass(); Field[] fields = entityClass.getDeclaredFields(); for (Field currentField : fields) { try { currentField.getAnnotation(RequiredField.class); Object fieldValue = getField(entity, currentField.getName()); if (fieldValue == null || fieldValue.equals("")) { empty = true; emptyFields.add(currentField.getName()); } } catch (Exception e) { // do nothing yet } } return empty; }

no projeto eu adicionei o primefaces mais atual e estou com um formulario do tipo wizard do primefaces, será ele que está influenciando ?
link dele: http://www.primefaces.org/showcase-labs/ui/wizard.jsf

W

rpsouza441:
Não sei se estou fazendo algo errado aqui. Pelo que li o “isEmpty(entity)” procura a annotation RequiredField e se tiver ele verifica se o campo está vazio. Mas eu até tirei todos os required field’s do modelo e ainda assim não aceita tentar gravar no banco com valores vazios., ou seja, sempre pede para preencher todos os campos ( lançando um erro_).

A unica diferença da apostila e do meu código é na interface required field eu adicionei o import “java.lang.annotation.ElementType” pois o eclipse pediu.

Aqui o codigo do isEmpty

@SuppressWarnings("rawtypes") public boolean isEmpty(Entity entity) { clean(); boolean empty = false; Class entityClass = entity.getClass(); Field[] fields = entityClass.getDeclaredFields(); for (Field currentField : fields) { try { currentField.getAnnotation(RequiredField.class); Object fieldValue = getField(entity, currentField.getName()); if (fieldValue == null || fieldValue.equals("")) { empty = true; emptyFields.add(currentField.getName()); } } catch (Exception e) { // do nothing yet } } return empty; }

no projeto eu adicionei o primefaces mais atual e estou com um formulario do tipo wizard do primefaces, será ele que está influenciando ?
link dele: http://www.primefaces.org/showcase-labs/ui/wizard.jsf

Você está certo, o isEmpty é um método que passa por todos os campos da Entidade procurando pela annotation RequiredField, se o campo estiver anotado com ela, ele verifica se tem valor preenchido, senão ele lança erro.
Se na sua Entidade os campos não possuem a annotation @RequiredField, o método não verifica se ele foi preenchido ou não. retornando sempre false, ou seja, não está vazio, e deve persistir no banco de dados sim.

O problema que pode estar havendo é dentro da annotation @RequiredField, é essencial que ela esteja com as annotation sobre ela falando que ela é do tipo RunTime e que será usada em Field:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)

Se mesmo assim estiver dando erro que é para preencher todos Fields, há algo errado já que ele entra no if para ver se foi preenchido o campo ou não somente se ele conseguir pegar a annotation RequiredField, ou seja, se não conseguir pegar, ele vai direto pro catch e o valor do empty vai continuar false.
Lembre que o isEmpty retorna true para se os campos estão vazio e false para se os campos com RequiredField estão preenchidos

E

Vlw manin… Tava mesmo precisando de um material desses para começar meus estudos!. . Ficou muito boa a apostila …

A

Fala ai amigão, tudo bem?

eu estou acompanhando o seu material que por sinal é ótimo, Parabéns, porém, esta dando um erro, não estou conseguindo executar o .xhtml, pode me dar uma ajudinha?

estou usando os .jar que você disponibilizou, eclipse (indigo), tomcat 7 da uma olhadinha no web.xml ve se esta tudo ok…

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		 xmlns="http://java.sun.com/xml/ns/javaee" 
		 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
		 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
		 id="WebApp_ID" version="3.0">
  <display-name>loja_Virtual</display-name>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  
   <!-- Configuração do Servlet do PrimeFces -->
  
  <servlet>
  	<servlet-name>Resource Servlet</servlet-name>
  	<servlet-class>/primefaces_resource/*</servlet-class>
  </servlet>
  
  <!-- Configuração dotemplante ou skin do primefaces -->
  
  <context-param>
  	<param-name>primefaces.THEME</param-name>
  	<param-value>redmond</param-value>
  </context-param>
  
</web-app>
W

alexandre.marques:
Fala ai amigão, tudo bem?

eu estou acompanhando o seu material que por sinal é ótimo, Parabéns, porém, esta dando um erro, não estou conseguindo executar o .xhtml, pode me dar uma ajudinha?

estou usando os .jar que você disponibilizou, eclipse (indigo), tomcat 7 da uma olhadinha no web.xml ve se esta tudo ok…

Opa, vlw Alexandre, tenta adicionar o seguinte codigo no seu web.xml:

<context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param>
Se não der certo, explique melhor seu erro, onde ele ocorre, qual mensagem, que posso ajudar melhor.

Qualquer coisa estamos ai,

A

Então Wolk eu inclui as tag no web.xml mais o projeto não executa e o tipo de erro não é o 404…

o erro e esse:

19/04/2012 16:32:45 org.apache.catalina.core.AprLifecycleListener init

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_23\bin;.;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Program Files\PC Connectivity Solution;C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\WINDOWS LIVE;C:\ORACLEXE\APP\ORACLE\PRODUCT\10.2.0\SERVER\BIN;C:\windows\SYSTEM32;C:\windows;C:\windows\SYSTEM32\WBEM;C:\windows\SYSTEM32\WINDOWSPOWERSHELL\V1.0;C:\PROGRAM FILES\BROADCOM\BROADCOM 802.11 NETWORK ADAPTER\DRIVER;C:\PROGRAM FILES\WINDOWS LIVE\SHARED;C:\PROGRAM FILES\WIDCOMM\BLUETOOTH SOFTWARE;C:\Program Files\INTERNET EXPLORER;C:\eclipse_J2EE_JBOSS;

19/04/2012 16:32:45 org.apache.tomcat.util.digester.SetPropertiesRule begin

AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:Loja_Virtual did not find a matching property.

19/04/2012 16:32:45 org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“http-bio-8080”]

19/04/2012 16:32:45 org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“ajp-bio-8009”]

19/04/2012 16:32:45 org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 782 ms

19/04/2012 16:32:45 org.apache.catalina.core.StandardService startInternal

INFO: Starting service Catalina

19/04/2012 16:32:45 org.apache.catalina.core.StandardEngine startInternal

INFO: Starting Servlet Engine: Apache Tomcat/7.0.19

19/04/2012 16:32:47 com.sun.faces.config.ConfigureListener contextInitialized

INFO: Initializing Suns JavaServer Faces implementation (1.2_04-b10-p01) for context /Loja_Virtual

19/04/2012 16:32:47 com.sun.faces.spi.InjectionProviderFactory createInstance

INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext listenerStart

GRAVE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener

java.lang.NoClassDefFoundError: javax/faces/component/behavior/ClientBehaviorHolder

at java.lang.Class.getDeclaredConstructors0(Native Method)

at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)

at java.lang.Class.getConstructor0(Class.java:2699)

at java.lang.Class.newInstance0(Class.java:326)

at java.lang.Class.newInstance(Class.java:308)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:1028)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:1100)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:509)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:402)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: java.lang.ClassNotFoundException: javax.faces.component.behavior.ClientBehaviorHolder

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

 17 more

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Error listenerStart

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Context [/Loja_Virtual] startup failed due to previous errors

19/04/2012 16:32:47 org.apache.coyote.AbstractProtocol start

INFO: Starting ProtocolHandler [“http-bio-8080”]

19/04/2012 16:32:47 org.apache.coyote.AbstractProtocol start

INFO: Starting ProtocolHandler [“ajp-bio-8009”]

19/04/2012 16:32:47 org.apache.catalina.startup.Catalina start

INFO: Server startup in 2348 ms

A pagina .xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets" 
      xmlns:h="http://java.sun.com/jsf/html" 
      xmlns:f="http://java.sun.com/jsf/core">

   <h:inputText value="Jesus seja louvado!!!" />
   
</html>

o Arquivo xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
         id="WebApp_ID" version="3.0">        
  <display-name>Loja_Virtual</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
   <!-- Configuração da Servlet do JSF -->
  
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
  
  <!-- Configuração do Servlet do PrimeFces -->
  
  <servlet>
  	<servlet-name>Resource Servlet</servlet-name>
  	<servlet-class>/primefaces_resource/*</servlet-class>
  </servlet>
  
  <!-- Configuração dotemplante ou skin do primefaces -->
  
  <context-param>
  	<param-name>primefaces.THEME</param-name>
  	<param-value>redmond</param-value>
  </context-param>

  <context-param>  
    <param-name>javax.faces.DEFAULT_SUFFIX</param-name>  
    <param-value>.xhtml</param-value>  
</context-param>  
  
</web-app>
W

alexandre.marques:
Então Wolk eu inclui as tag no web.xml mais o projeto não executa e o tipo de erro não é o 404…

o erro e esse:

19/04/2012 16:32:45 org.apache.catalina.core.AprLifecycleListener init

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_23\bin;.;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Program Files\PC Connectivity Solution;C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\WINDOWS LIVE;C:\ORACLEXE\APP\ORACLE\PRODUCT\10.2.0\SERVER\BIN;C:\windows\SYSTEM32;C:\windows;C:\windows\SYSTEM32\WBEM;C:\windows\SYSTEM32\WINDOWSPOWERSHELL\V1.0;C:\PROGRAM FILES\BROADCOM\BROADCOM 802.11 NETWORK ADAPTER\DRIVER;C:\PROGRAM FILES\WINDOWS LIVE\SHARED;C:\PROGRAM FILES\WIDCOMM\BLUETOOTH SOFTWARE;C:\Program Files\INTERNET EXPLORER;C:\eclipse_J2EE_JBOSS;

19/04/2012 16:32:45 org.apache.tomcat.util.digester.SetPropertiesRule begin

AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:Loja_Virtual did not find a matching property.

19/04/2012 16:32:45 org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“http-bio-8080”]

19/04/2012 16:32:45 org.apache.coyote.AbstractProtocol init

INFO: Initializing ProtocolHandler [“ajp-bio-8009”]

19/04/2012 16:32:45 org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 782 ms

19/04/2012 16:32:45 org.apache.catalina.core.StandardService startInternal

INFO: Starting service Catalina

19/04/2012 16:32:45 org.apache.catalina.core.StandardEngine startInternal

INFO: Starting Servlet Engine: Apache Tomcat/7.0.19

19/04/2012 16:32:47 com.sun.faces.config.ConfigureListener contextInitialized

INFO: Initializing Suns JavaServer Faces implementation (1.2_04-b10-p01) for context /Loja_Virtual

19/04/2012 16:32:47 com.sun.faces.spi.InjectionProviderFactory createInstance

INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext listenerStart

GRAVE: Exception sending context initialized event to listener instance of class com.sun.faces.config.ConfigureListener

java.lang.NoClassDefFoundError: javax/faces/component/behavior/ClientBehaviorHolder

at java.lang.Class.getDeclaredConstructors0(Native Method)

at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)

at java.lang.Class.getConstructor0(Class.java:2699)

at java.lang.Class.newInstance0(Class.java:326)

at java.lang.Class.newInstance(Class.java:308)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:1028)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:1100)

at com.sun.faces.config.ConfigureListener.configure(ConfigureListener.java:509)

at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:402)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4723)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5226)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5221)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: java.lang.ClassNotFoundException: javax.faces.component.behavior.ClientBehaviorHolder

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)

 17 more

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Error listenerStart

19/04/2012 16:32:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Context [/Loja_Virtual] startup failed due to previous errors

19/04/2012 16:32:47 org.apache.coyote.AbstractProtocol start

INFO: Starting ProtocolHandler [“http-bio-8080”]

19/04/2012 16:32:47 org.apache.coyote.AbstractProtocol start

INFO: Starting ProtocolHandler [“ajp-bio-8009”]

19/04/2012 16:32:47 org.apache.catalina.startup.Catalina start

INFO: Server startup in 2348 ms

Alexandre, seu erro não é no projeto ou em qualquer parte dele, seu problema é na configuração do Tomcat, ele não consegue nem encontrar o java.lang que é nativo do java, nem import a gente precisa de dar nele para usar as classes.
Nas primeiras linhas fala que não consegue encontrar os arquivos de configuração do tomcat, verifique se o seu jdk está bem especificado no JAVA_HOME e no CLASSPATH, veja se é necessário de colocar a variavel CATALINA_HOME.

E

Parabéns pela iniciativa.

W

Wolky, parabéns pela apostila !!! muito boa,

gostaria de pediar ajuda com o seguinte erro quando rodo a aplicação e chamo a pagina CadReino.jsf :
javax.servlet.ServletException: Não é possível criar instância para·a classe: br.ueg.portalVirtual.view.managed.ReinoMB.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

W

wtaumaturgo:
Wolky, parabéns pela apostila !!! muito boa,

gostaria de pediar ajuda com o seguinte erro quando rodo a aplicação e chamo a pagina CadReino.jsf :
javax.servlet.ServletException: Não é possível criar instância para·a classe: br.ueg.portalVirtual.view.managed.ReinoMB.
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)

Preciso de mais informações wtaumaturgo, poste o xhtml e o .java do ReinoMB, mas faça o seguinte:
Use o debug e ponha um breakpoint bem na primeira linha do construtor do reinoMB, e veja se tem alguma variável nula.
Básicamente esse erro é que o jsf não conseguiu criar instancia da classe, isso normalmente ocorre por tentar acessar alguma variável que está nula, dando exception e não tem como da new na classe.

W

Olá Wolky segue o código

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<ui:composition template="../templates/template.xhtml">
	<ui:define name="title">
		<h:outputText value="#{msg.reino_title}" />
	</ui:define>
	<ui:define name="context">
		<h:form>
			<h:panelGrid columns="2">
				<p:commandButton value="#{msg.reino_add}" oncomplete="dlg.show();"
					update="formCad" />
				<p:commandButton value="#{msg.button_list}" ajax="false"
					action="#{reinoMB.list}" update="listPanel" />
				<p:inputText value="#{reinoMB.busca}" />
				<p:commandButton value="#{msg.button_search}" ajax="false"
					action="#{reinoMB.find}" />
			</h:panelGrid>
			<p:dataTable rendered="#{reinoMB.listing}"
				value="#{reinoMB.listEntity}" var="reinos" rows="5"
				emptyMessage="#{msg.reino_empty}" paginator="true">
				<p:column headerText="#{msg.reino_reinoColumn}">
					<h:outputText value="#{reinos.reino}" />
				</p:column>
				<p:column headerText="#{msg.column_edit}">
					<p:commandLink update="formCad" oncomplete="dlg.show();">
						<f:setPropertyActionListener target="#{reinoMB.entity}"
							value="#{reinos}" />
						<p:graphicImage
							value="#{pageContext.servletContext.contextPath}/images/editar.png"
							title="#{msg.column_edit}" />
					</p:commandLink>
				</p:column>
				<p:column headerText="#{msg.column_delete}">
					<p:commandLink action="#{reinoMB.delete}" ajax="false">
						<p:graphicImage
							value="#{pageContext.servletContext.contextPath}/images/lixeira.png"
							title="#{msg.column_delete}" />
						<f:setPropertyActionListener target="#{reinoMB.entity}"
							value="#{reinos}" />
					</p:commandLink>
				</p:column>
			</p:dataTable>
			<p:messages showDetail="true" showSummary="false" />
		</h:form>
		<p:dialog widgetVar="dlg" modal="true" closable="true"
			header="#{msg.reino_header}">
			<h:form id="formCad">
				<h:panelGrid columns="2">
					<h:outputText value="#{msg.reino_reino}" />
					<p:inputText value="#{reinoMB.entity.reino}" />
				</h:panelGrid>
				<p:column>
					<p:commandButton value="#{msg.button_save}"
						action="#{reinoMB.saveOrUpdate}" ajax="false" />
					<p:commandButton value="#{msg.button_cancel}" onclick="dlg.hide();"
						actionListener="#{reinoMB.cancel}" />
				</p:column>
			</h:form>
		</p:dialog>
	</ui:define>
</ui:composition>
</html>

package br.ueg.portalVirtual.view.managed;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import br.ueg.portalVirtual.model.Reino;

@ManagedBean
@SessionScoped
public class ReinoMB extends MB<Reino> {
	public ReinoMB() {
		super();
	}

	@Override
	protected void initializeEntity() {
		setEntity(new Reino());
	}
}
W

poem um breakpoint no construtor do MB e vê lá se da alguma exception, deve ser alguma variável nula… o código está ok
posta tb o código do MB.java, mas vc vai encontrar o erro melhor debugando, possivelmente no MB ele deve estar setando o control nulo…

W
package br.ueg.portalVirtual.view.managed;

import java.util.List;
import javax.faces.event.ActionEvent;
import br.ueg.portalVirtual.control.Control;
import br.ueg.portalVirtual.model.Entity;

public abstract class MB<E extends Entity> {
	
	private Control<E> control;
	private boolean listing = false;
	private E entity;
	private List<E> listEntity;
	private String busca;

	public MB() {
		control = new Control<E>();
		initializeEntity();
	}

	protected Control<E> getControl() {
		return control;
	}

	protected void setControl(Control<E> control) {
		this.control = control;
	}

	public boolean isListing() {
		return listing;
	}

	public void setListing(boolean listing) {
		this.listing = listing;
	}

	public E getEntity() {
		return entity;
	}

	public void setEntity(E entity) {
		this.entity = entity;
	}

	public List<E> getListEntity() {
		return listEntity;
	}

	public void setListEntity(List<E> listEntity) {
		this.listEntity = listEntity;
	}

	public String getBusca() {
		return busca;
	}

	public void setBusca(String busca) {
		this.busca = busca;
	}

	public void list() {
		setListing(true);
		listEntity = control.getListAll(getEntity());
	}

	public void saveOrUpdate() {
		if (entity.getId() == 0) {
			control.save(entity);
		} else {
			control.update(entity);
		}
		initializeEntity();
		verifyListing();
	}

	public void delete() {
		control.delete(entity);
		verifyListing();
	}

	public void find() {
		setListing(true);
		listEntity = control.findByCriteria(getEntity(), busca);
	}

	private void verifyListing() {
		if (listing) {
			listEntity = control.getListAll(getEntity());
		}
	}

	public void cancel(ActionEvent event) {
		initializeEntity();
	}

	protected abstract void initializeEntity();

}

package br.ueg.portalVirtual.view.managed;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import br.ueg.portalVirtual.control.Control;
import br.ueg.portalVirtual.model.Filo;
import br.ueg.portalVirtual.model.Reino;

@ManagedBean
@SessionScoped
public class FiloMB extends MB<Filo> {
	private List<Reino> reinos;
	private Control<Reino> localControl;

	public FiloMB() {
		super();
		localControl = new Control<Reino>();
	}

	@Override
	protected void initializeEntity() {
		setEntity(new Filo());
	}

	public List<Reino> getReinos() {
		return reinos;
	}

	public void setReinos(List<Reino> reinos) {
		this.reinos = reinos;
	}

	public void listReino(ActionEvent event) {
		reinos = localControl.getListAll(new Reino());
	}

}
W

a primeira vista, está tudo ok, manda pra mim o .war ou gera o .zip do seu workspace e manda pro meu e-mail: [email removido]
vou fazer uns testes nele

W

Diego Enviei o .war para seu E-mail
Meu e-mail é [email removido]

W

wtaumaturgo:
Diego Enviei o .war para seu E-mail
Meu e-mail é [email removido]

Seu problema é que o Spring não consegue criar a instancia do GenericDAO, já que você definiu que seu banco é o MySQL, mas não colocou na pasta lib o .jar do jdbc mysql, só vi o do postgresql lá, e vc tem muito jar lá… mtos não são usados…

se trocar para postgres, vai funcionar, ou vc baixa o jdbc

W

Coloquei o banco de dados como PostgreSQL
fiz as mudanças no jdbc.properties, e no spring.xml
na linha 15 para 16 do spring.xml tem um enter la na classe do hibernate, retire o enter…
e retirei o OneToMany no reino (não sei pq não deu certo)
e abriu o CadReino perfeitamente,

coloque o driver jdbc do mysql no projeto e tentai, qualquer coisa só falar

A

MUITO BOM O TUTORIAL, tens alguma implementação de testes únitarios com spring e relatórios com emma?
abrc

W

agune:
MUITO BOM O TUTORIAL, tens alguma implementação de testes únitarios com spring e relatórios com emma?
abrc

Vlw, mas não conheço as coisas que você falou, tenho uma aplicação de relatórios em jasperreport, porém não fiz tutorial,
fiz apenas esse tutorial até hoje.

A

Sobre essas coisas ai que eu falei são muito interessantes:
o SPRING podes encontrar suporte ai:


http://www.springbrasil.com.br/
ajuda na segurança, performance entre outros de app WEB.

quanto ai EMMA foi so para testar eu ouvi falar que podia-se fazer um relatório de testes e encontrei um exemplo muito bom, olha só este e ainda podes baixar o exemplo no fim da página, curte ai isto é se sabes o que são testes unitarios e para que servem:

:arrow: http://improveit.com.br/xp/praticas/tdd/emma#Listagem1

abrc…

W

O Spring security eu conheço e até o uso em um projeto, porém não tenho tanta experiência assim a ponto de escrever um tutorial, os testes unitários só conheço o JUnit e não tenho experiência com o mesmo,
agora o EMMA não conhecia mesmo, assim que tiver um tempo do uma lida neles, e se também tiver adquirido experiencia com o security tento escrever um tutorial sobre.
Vlw pela dica

A

Boa Tarde Companheiro,

Tentei iniciar o projeto seguindo seu tutorial, mas deu o erro abaixo, sei que é algum problema nas configurações. Vc pode me dá uma luz?

Obrigado.

Jun 28, 2012 12:57:56 PM org.apache.catalina.core.AprLifecycleListener init

Informações: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre7/bin/client;C:/Arquivos de programas/Java/jre7/bin;C:/Arquivos de programas/Java/jre7/lib/i386;C:\Arquivos de programas\PC Connectivity Solution;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Microsoft SQL Server\80\Tools\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn;C:\Arquivos de programas\Microsoft SQL Server\90\DTS\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE;C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies;%JAVA_HOME%\bin;C:\Arquivos de programas\Internet Explorer;D:\eclipse;;.

Jun 28, 2012 12:57:56 PM org.apache.tomcat.util.digester.SetPropertiesRule begin

Advertência: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:portal_virtual did not find a matching property.

Jun 28, 2012 12:57:56 PM org.apache.coyote.AbstractProtocol init

Informações: Initializing ProtocolHandler [“http-bio-8080”]

Jun 28, 2012 12:57:56 PM org.apache.coyote.AbstractProtocol init

Informações: Initializing ProtocolHandler [“ajp-bio-8009”]

Jun 28, 2012 12:57:56 PM org.apache.catalina.startup.Catalina load

Informações: Initialization processed in 463 ms

Jun 28, 2012 12:57:56 PM org.apache.catalina.core.StandardService startInternal

Informações: Starting service Catalina

Jun 28, 2012 12:57:56 PM org.apache.catalina.core.StandardEngine startInternal

Informações: Starting Servlet Engine: Apache Tomcat/7.0.27

Jun 28, 2012 12:57:59 PM org.apache.catalina.core.ContainerBase startInternal

Grave: A child container failed during start

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/portal_virtual]]

at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)

at java.util.concurrent.FutureTask.get(Unknown Source)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)

at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)

at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/portal_virtual]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

 7 more

Caused by: java.lang.IllegalArgumentException: Invalid  /faces/*.jsf in servlet mapping

at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3208)

at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3183)

at org.apache.catalina.deploy.WebXml.configureContext(WebXml.java:1302)

at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1294)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

… 7 more
Jun 28, 2012 12:57:59 PM org.apache.catalina.core.ContainerBase startInternal

Grave: A child container failed during start

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)

at java.util.concurrent.FutureTask.get(Unknown Source)

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1128)

at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.startup.Catalina.start(Catalina.java:675)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)

at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Caused by: org.apache.catalina.LifecycleException: A child container failed during start

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1136)

at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:782)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 7 more
Jun 28, 2012 12:57:59 PM org.apache.catalina.startup.Catalina start

Grave: Catalina.start:

org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.startup.Catalina.start(Catalina.java:675)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:322)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:450)

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 7 more

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 9 more

Caused by: org.apache.catalina.LifecycleException: A child container failed during start

at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1136)

at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 11 more

Jun 28, 2012 12:58:00 PM org.apache.catalina.startup.Catalina start
Informações: Server startup in 3186 ms

W

Boa tarde,

sua configuração do web.xml está errada, toda vez que der erro de iniciação, é web.xml que está com problema, ou incompatibilidade com a versão do tomcat.

sua configuração do jsf está:
<url-pattern> /faces/*.jsf </url-parttern>
apague o /faces/ veja o arquivo como tem que ficar:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>portal-virtual</display-name> 

<welcome-file-list> 
<welcome-file>index.html</welcome-file>
 </welcome-file-list>

<!-- Configuração da servlet do JSF --> 
<servlet>
 <servlet-name>Faces Servlet</servlet-name>
 <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
 <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping>
 <servlet-name>Faces Servlet</servlet-name>
 <url-pattern>*.jsf</url-pattern>
 </servlet-mapping> 
<!-- Configuração da servlet do primeface --> 
<servlet>
 <servlet-name>Resource Servlet</servlet-name>
 <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> 
</servlet> 
<servlet-mapping>
 <servlet-name>Resource Servlet</servlet-name>
 <url-pattern>/primefaces_resource/*</url-pattern> 
</servlet-mapping>
 <!-- Configuração do template ou skin do primefaces --> 
<context-param>
 <param-name>primefaces.THEME</param-name>
 <param-value>redmond</param-value> 
</context-param> 
</web-app>
A

Valeu cara pela ajuda do web.xml. Tentei rodar agora, mas deu esse erro abaixo. Tem a ver com alguma biblioteca?

Desde já, obrigado.

Jun 28, 2012 6:03:07 PM org.apache.catalina.core.AprLifecycleListener init

Informações: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre7\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre7/bin/client;C:/Arquivos de programas/Java/jre7/bin;C:/Arquivos de programas/Java/jre7/lib/i386;C:\Arquivos de programas\PC Connectivity Solution;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arquivos de programas\Microsoft SQL Server\80\Tools\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn;C:\Arquivos de programas\Microsoft SQL Server\90\DTS\Binn;C:\Arquivos de programas\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE;C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies;%JAVA_HOME%\bin;C:\Arquivos de programas\Internet Explorer;D:\eclipse;;.

Jun 28, 2012 6:03:07 PM org.apache.tomcat.util.digester.SetPropertiesRule begin

Advertência: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property source to org.eclipse.jst.jee.server:portal_virtual did not find a matching property.

Jun 28, 2012 6:03:07 PM org.apache.coyote.AbstractProtocol init

Informações: Initializing ProtocolHandler [“http-bio-8080”]

Jun 28, 2012 6:03:07 PM org.apache.coyote.AbstractProtocol init

Informações: Initializing ProtocolHandler [“ajp-bio-8009”]

Jun 28, 2012 6:03:07 PM org.apache.catalina.startup.Catalina load

Informações: Initialization processed in 554 ms

Jun 28, 2012 6:03:07 PM org.apache.catalina.core.StandardService startInternal

Informações: Starting service Catalina

Jun 28, 2012 6:03:07 PM org.apache.catalina.core.StandardEngine startInternal

Informações: Starting Servlet Engine: Apache Tomcat/7.0.27

Jun 28, 2012 6:03:07 PM org.apache.catalina.core.ApplicationContext log

Informações: Marking servlet Faces Servlet as unavailable

Jun 28, 2012 6:03:07 PM org.apache.catalina.core.StandardContext loadOnStartup

Grave: Servlet /portal_virtual threw load() exception

java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)

at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)

at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)

at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:124)

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)

at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)

at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Jun 28, 2012 6:03:07 PM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler [“http-bio-8080”]
Jun 28, 2012 6:03:07 PM org.apache.coyote.AbstractProtocol start
Informações: Starting ProtocolHandler [“ajp-bio-8009”]
Jun 28, 2012 6:03:07 PM org.apache.catalina.startup.Catalina start
Informações: Server startup in 397 ms

W

Ta dando erro de iniciação do JSF, não ta conseguindo achar a Servlet do mesmo, você colocou na pasta WEB-INF/lib do projeto as bibliotecas do JSF que ta no tutorial.
Se estiver, é outro problema no web.xml ou faces-config.xml, posta os arquivos ai pra da uma olhada

A

Segue…

<?xml version="1.0" encoding="UTF-8"?> portal-virtual index.html Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet *.jsf Resource Servlet org.primefaces.resource.ResourceServlet Resource Servlet /primefaces_resource/* primefaces.THEME redmond <?xml version="1.0" encoding="UTF-8"?>
<application> 
	<resource-bundle> 
		<base-name>br.ueg.portalVirtual.bundle.messages</base-name> 
			<var>msg</var> 
	</resource-bundle> 

	<locale-config> 
		<default-locale>pt_BR</default-locale> 
		<supported-locale>pt_BR</supported-locale> 
		<supported-locale>en_US</supported-locale> 
	</locale-config> 
	
	<message-bundle>br.ueg.portalVirtual.bundle.messages</message-bundle> 
</application>
D

Opaaaaaaaaa…

mas que beleza :slight_smile:
queria mesmo estudar essas tecnologias…
ainda bem q este post estava nos ‘posts recentes’ viu …

abração, vou baixar… qndo der pra estudar eu estudo
e falo pro pessoal se achei o material bom ou não :slight_smile:

abraçoss
vlw pela iniciativa

PS; tbem to precisando fazer algo para agradecer o pessoal do guj viu…
ajudam muito … eu tento ajudar de vez em quando, mas mais peço ajuda
do que ajudo… hehe

abração

W

certifique-se que todas as libs citadas no tutorial estão na pasta /lib, verifique se a versão do tomcat é a 7.0 ou superior (6.0 não é compativel)
se tudo estiver ok, mande a .war (com código fontes) para meu e-mail que irei dar uma olhada hoje mais tarde depois da facul ([email removido])

S

Muito bom o material hein!
Ótima iniciativa. Parabéns e obrigado.

L

Que achado! Ainda bem que resolvi dar uma “viajada” no fórum e me deparei com seu material.
Muito bom. Parabéns pela iniciativa e obrigado por compartilhar! :smiley:

V

Amigão,

Sei que é muito repetitivo agradecer, mas preciso aumentar o número daqueles que aprovaram sua iniciativa.

Além de ser um material de grande valia pra quem precisa de uma iniciação destas tecnologias, vale o seu empenho e a atenção de ter lembrado do pessoal aqui do fórum!

Valeu mesmo.

C

Alguém tem um link novo aii ?

W

Pessoal, obrigado pelo feedback e pelos elogios, isso valoriza muito o esforço empreendido.
E carlos, link novo sobre? a apostila não é velha, não é a ultima versão do primefaces, mas da base para utilizá-la, os links são:
https://rapidshare.com/files/[telefone removido]/Tutorial_JAVA_Web_com_JSF_2.pdf

B

Parabenizo por esta apostila, realmente muito joia.

Tambem tive o mesmo problema com o template, mas resolvi. O probelma, no meu caso, era que no tomcat o diretório template estava “templates”, alterei e funcionou.

O problema que tenho agora é na persistencia, estou tentando utilizar o MySql e o hibernate está dando o erro:

javax.servlet.ServletException: org.springframework.dao.DataAccessResourceFailureException: Cannot open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

R

Opaa! Muito bom!

Pena que não consigo acessar esses sites de downloads aqui na empresa.

Vou baixar e estudar em casa!

Obrigado!

:smiley:

W

betoshalom:
Parabenizo por esta apostila, realmente muito joia.

Tambem tive o mesmo problema com o template, mas resolvi. O probelma, no meu caso, era que no tomcat o diretório template estava “templates”, alterei e funcionou.

O problema que tenho agora é na persistencia, estou tentando utilizar o MySql e o hibernate está dando o erro:

javax.servlet.ServletException: org.springframework.dao.DataAccessResourceFailureException: Cannot open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

Boa tarde,

Não é só você que está com esse problemas, diversas pessoas estão com problema de configurar o MySQL, mas tem que funcionar, é alguma configurar do arquivo .properties de conexão, é necessário informar o driver do mysql no .propertiers para criar a conexão e também configurar no spring.xml informando que o dialeto é do mysql, verei se arrumo um tempo e instalo o mysql no meu notebook, faço as configurações e posto aqui, porém não prometo nada por agora…

Agradeço a todos pelo feedback.

R

Wolky:
betoshalom:
Parabenizo por esta apostila, realmente muito joia.

Tambem tive o mesmo problema com o template, mas resolvi. O probelma, no meu caso, era que no tomcat o diretório template estava “templates”, alterei e funcionou.

O problema que tenho agora é na persistencia, estou tentando utilizar o MySql e o hibernate está dando o erro:

javax.servlet.ServletException: org.springframework.dao.DataAccessResourceFailureException: Cannot open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

Boa tarde,

Não é só você que está com esse problemas, diversas pessoas estão com problema de configurar o MySQL, mas tem que funcionar, é alguma configurar do arquivo .properties de conexão, é necessário informar o driver do mysql no .propertiers para criar a conexão e também configurar no spring.xml informando que o dialeto é do mysql, verei se arrumo um tempo e instalo o mysql no meu notebook, faço as configurações e posto aqui, porém não prometo nada por agora…

Agradeço a todos pelo feedback.

Colega, você não consegue anexar essa apostila em um post daqui do fórum?

Queria estudar ela, mas não estou conseguindo acessar meu email pra pegar ela, e storages são bloqueados aqui na empresa…

Acho que o fórum aceita o tamanho dela, não tem nem 2MB né?

Valeu!

W

Ruttmann:
Wolky:
betoshalom:
Parabenizo por esta apostila, realmente muito joia.

Tambem tive o mesmo problema com o template, mas resolvi. O probelma, no meu caso, era que no tomcat o diretório template estava “templates”, alterei e funcionou.

O problema que tenho agora é na persistencia, estou tentando utilizar o MySql e o hibernate está dando o erro:

javax.servlet.ServletException: org.springframework.dao.DataAccessResourceFailureException: Cannot open connection; nested exception is org.hibernate.exception.JDBCConnectionException: Cannot open connection
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)

Boa tarde,

Não é só você que está com esse problemas, diversas pessoas estão com problema de configurar o MySQL, mas tem que funcionar, é alguma configurar do arquivo .properties de conexão, é necessário informar o driver do mysql no .propertiers para criar a conexão e também configurar no spring.xml informando que o dialeto é do mysql, verei se arrumo um tempo e instalo o mysql no meu notebook, faço as configurações e posto aqui, porém não prometo nada por agora…

Agradeço a todos pelo feedback.

Colega, você não consegue anexar essa apostila em um post daqui do fórum?

Queria estudar ela, mas não estou conseguindo acessar meu email pra pegar ela, e storages são bloqueados aqui na empresa…

Acho que o fórum aceita o tamanho dela, não tem nem 2MB né?

Valeu!

Desculpe a demora, estou muito ocupado com meu TCC.
A apostila pesa 1 mega e o limite que consta aqui para mim é de 512kb, se quiser deixe seu e-mail que encaminho a apostila

S

Muito bom!

Obrigado!

Criado 4 de dezembro de 2011
Ultima resposta 5 de dez. de 2012
Respostas 102
Participantes 45