tutorial jsf 2 + primefaces + ejb 3 + jpa + glassfish 3.1.1 _ silvânio júnior
Post on 30-Oct-2015
263 Views
Preview:
TRANSCRIPT
-
Silvnio JniorDesenvolvimento de Sistemas
HomeDesenvolvimento Java
Home > Desenvolvimento Java, Engenharia de Software, Testes automatizados > Tutorial JSF 2 + Primefaces + EJB 3 +JPA + GlassFish 3.1.1
Tutorial JSF 2 + Primefaces + EJB 3 + JPA + GlassFish 3.1.1
fevereiro 23, 2012 Silvnio Jnior Deixe um comentrio Go to comments
Para esse tutorial vamos utilizar:
Eclipse Indigo > http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/indigosr2-rc3
Glassfish 3.1.1 > http://glassfish.java.net/downloads/3.1.1-final.html
Primefaces -> ltima verso estvel do primefaces primefaces3.1.1.jar(23/02/2012)
http://www.primefaces.org/downloads.html
EJB 3, Defult no Glassfish.
JPA 2, Defult no Glassfish.
JSF 2(Mojarra), Defult Glassfish.
1) Criando o projeto:
Crie um EJB Project (Boto direito -> new -> EJB Project)
-
Insira um nome para o projeto e v em new Runtime -> Glassfish 3.1 ->Click em Next e defina o GlassFish da seguinteforma:
Escolha o jdk em que ir trabalhar e em Application Server Directory selecione o Glassfish: %caminho%+glassfish-3.1.1/glassfish (diretrio onde est localizado seu glassfish v em glassfish-3.1.1/glassfish).
Aps clicar em finish, marque o checkBox para adicionar o projeto EAR, veja imagem abaixo:
-
Aps selecionar clique em Next at chegar em:
-
Escolha um nome para o Projeto Cliente no caso ProjetoEjbClient (Contrato para acessar os EJBs). Clique em Finish.
2) Criando o Projeto Web
Crie um Dynamic Web Project :
-
Clique em Next, marque o checkBox Generate Web.xml deployment descriptor e para finalizar clique finish.
Vamos adicionar o projetoEjbClient dentro do ProjetoWeb, ou seja para acessar os Ejbs o projeto web precisa conhecerapenas as interfaces (Contratos).
Clique com o boto direito no ProjetoWeb -> Properties -> Java Build Path -> Projects -> add
Marque o ProjetoEjbClient e clique em OK :
-
Clique em Ok para finalizar.
3) Configurando o JSF 2.0 e o Primefaces
Clique com o boto direto no projeto ProjetoWeb -> properties -> project Facets e marque a opo Java server facesversion 2.0:
Aps selecionar JavaServer Faces clique em Futher configuration required e siga os seguintes passos:
-
Aps fazer esses procedimentos clique em OK, no formulrio de baixo Clique e Apply e em OK novamente.
Vamos adicionar a biblioteca do primefaces no projeto: http://www.primefaces.org/downloads.html , baixe a versoprimefaces-3.1.1.jar . Adicione a biblioteca dentro de: /ProjetoWeb/WebContent/WEB-INF/lib depois adicione no BuildPath : boto direito do mouse encima de primefaces-3.1.1.jar ->Build Path -> add Build Path.
Agora vamos adicionar o servidor no eclipse, vai em Servers -> boto direito -> new -> Server-> escolha o Glassfish3.1, caso no aparece o Glassfish v em Download aditional Server adapters e baixe o plugin do Glassfish.
-
Aps Selecionar o GlassFish 3.1.1 clique em Add.. escolha o JDK e selecione a pasta de localizao do Glassfish:
Depois Next->Next->Finish -> ainda no adicione o ProjetoEjbEAR no Server.
4) Criando o banco de dados
Baixe o jar do mysqlConnector mysql-connector-java-5.1.13-bin
-
Copie o jar para : %caminhoGlassfish%\glassfish-3.1.1\glassfish\libCrie um banco com o nome tutorial, no insira nenhuma tabela(vamos inserir atravs de mapeamento no java).Rode o glassfish que est no eclipse (sem aplicao, ou seja tira a nossa aplicao do servidor).Entre com o seguinte endereo no browser.http://localhost:8080Aps entrar, no menu v em JDBC->JDBC Connection Pools -> New.
Preencha os campos como o exemplo:
Pool Name : tutorial
Resource Type: javax.sql.connectionPoolDataSouce
Dababase Driver Vendor: MySql
Clique em Next-> Em Additional Properties (199) preencha os seguintes campos:
DatabaseName: tutorial
User: usuario do seu banco ex:root
Password:senha do seu banco ex:root
Servername:servidor onde encontra o banco no caso do tutorial localhost
URL:jdbc:mysql://localhost:3306/tutorial
url:jdbc:mysql://localhost:3306/tutorial
Aps esses passos clique em finish e teste a conexo clicando em PING.
Caso esteja tudo certo voc ver a segunte Mensagem Ping Succeeded
Agora vamos criar o DataSource
No menu do glassfish v em ->JDBC->JDBC Resources->New. Preenche os seguintes dados:
JNDI Name : jdbc/tutorial
Pool Name: selecione o pool que criamos tutorial clique em OK.
5) Configurar DataSorce no persistence.xml
No projeto ProjetoEjb v em /ejbModule/META-INF e insira um xml chamado persistence.xml
Clique com o boto direito em META-INF v em New-> Other-> digita xml e escolha XML File.
Dentro de pesistence.xml implemente o seguinte cdigo:
Clique na imagem para ampliar.
-
Aps configurar o persistence.xml, vamos criar as entidades:
No projeto ProjetoEjbClient adicione o seguinte pacote : br.com.tutorial.entidade
Dentro desse pacote crie as classes Clientes e Pedidos.
Clientes.java
Pedidos.java
-
6) Criando as intefaes e os EJBs
Essas intefaces serviro Para fazermos lookup no EJB, ou seja caso precisamos que uma outra aplicao acesse nosso ejbtanto no mesmo servidor quanto em outros servidores precisaremos dessa interface (Contrato) para fazermos o lookup.
Porque precisamos dessa interface? Pense O projeto que ir acessar outro projeto precisa saber quais mtodos existemno outro projeto e qual classe ele ir acessar, logo ele conhecer apenas a interface.
Vamos Criar nossas interfaces crie no projeto ProjetoEjbClient o seguinte pacote: br.com.tutorial.contratoEjb
As interfaces sero criadas com a anotao @Remote, pois mais na frente nesse tutorial iremos acessar os ejbs atravsde uma outra aplicao, ou seja iremos acessar remotamente.
@Remote -> para o EJB ficar visvel h aplicao externa.
@Local -> EJB Visvel apenas para a prpria aplicao.
Crie no pacote br.com.tutorial.contratoEjb as interfaces Cliente e Pedido.
ClienteRemote:
-
PedidoRemote:
Vamos implementar os EJBs, No projeto ProjetoEjb crie o seguinte pacote:
br.com.tutorial.sessionBean
Crie as Classes ClienteSessioBean e PedidoSessionBean
ClienteSessionBean:
PedidoSessionBean:
-
7) Criar ManagedBean do JSF
No ProjetoWeb dentro de src crie o pacote br.com.tutorial.manegedBean, dentro desse pacote crie nossoManegedBean chamado de ClienteBean:
package br.com.tutorial.manegedBean;import java.util.ArrayList;import java.util.List;import javax.ejb.EJB;import javax.faces.application.FacesMessage;import javax.faces.application.FacesMessage.Severity;import javax.faces.bean.ManagedBean;import javax.faces.bean.RequestScoped;import javax.faces.context.FacesContext;import br.com.tutorial.contratoEjb.ClienteRemote;import br.com.tutorial.entidade.Clientes;
@ManagedBean@RequestScopedpublic class ClienteBean {
@EJBprivate ClienteRemote clienteRemote;
private Clientes cliente;
private List listaClientes;
public void salvar() {try {// tirando a mascara de CPFcliente.setCpf(cliente.getCpf().replace(., ).replace(-, ));this.clienteRemote.salvar(cliente);retornar();} catch (Exception e) {this.addMensagem(FacesMessage.SEVERITY_WARN, Erro ao salvar);}}
private void retornar() {this.addMensagem(FacesMessage.SEVERITY_INFO,Operao realizada com sucesso);this.listarClientes();
-
cliente = new Clientes();}
public void excluir(){this.clienteRemote.excluir(getCliente());cliente = new Clientes();this.listarClientes();}
private void addMensagem(Severity tipo, String msg) {FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(tipo, , msg));}
public void listarClientes() {this.listaClientes = this.clienteRemote.listarClientes();}
public void limpar() {cliente = new Clientes();listaClientes = new ArrayList();}
public Clientes getCliente() {if (cliente == null) {cliente = new Clientes();}return cliente;}
public void setCliente(Clientes cliente) {this.cliente = cliente;}
public List getListaClientes() {if (listaClientes == null) {this.listarClientes();}return listaClientes;}
public void setListaClientes(List listaClientes) {this.listaClientes = listaClientes;}
}
Com o Maneged Bean criado, vamos implementar nossa pgina, dentro de ProjetoWeb/WebContent crie um xhtml como nome cliente.xhml:
Clique com o boto direito encima de WebContent new-> other-> HTML , aps criar o HTML
Voc deve ronomea-lo para cliente.xhtmlcliente.xhtml
-
xmlns:p=http://primefaces.org/ui>
>
-
Aps criar a pgina inicie o glassfish sem a aplicao, vamos adicionar o suporte a hibernate no glassfish,para que a aplicao consiga reconhecer o persistence.xml..
muito importante que a aplicao no esteja no glassfish.
-
Agora inicie o glassfish:
Aps o servidor iniciar acesse no eu Browser : http://localhost:4848
V em update Tool ->procure hibernate e marque o checkbox-> clique em install->ok->accept
-
Esse processo um pouco lento.
Aps clicar em accept e esperar um pouco receber a seguinte mensagem:
Agora vamos reiniciar o glassfish com a nossa aplicao:
-
Aps o glassfish iniciar, verifique se o jpa criou as entidades no seu banco de dados:
Acesse a URL : http://localhost:8080/ProjetoWeb/cliente.jsf
Se os passos foram executados corretamente voc ver:
O ltimo passo agora modificar o persistence.xml
Modifique essa linha no persistence.xml
Por essa:
Com essa modificao o jpa no ficar criando as entidades toda vez que subir o servidor.
-
Share this:
Curtir isso:
Be the first to like this.
Para saber mais sobre o funcionamento de EJB,JPA sugiro a leitura da seguinte apostila
Desenvolvimento Web Avanado com JSF2. EJB 3.1 e CDI
download: http://www.k19.com.br/cursos/desenvolvimento-web-avancado-com-jsf2-ejb3.1-e-cdi
At o Prximo Tutrial, qualquer dvida estou a disposio.
Email: jrsilvanio@gmail.com
CategoriasDesenvolvimento Java, Engenharia de Software, Testes automatizadosComentrios (11) Trackbacks (1) Deixe um comentrio Trackback
Lennonabril 3, 2012 s 2:09 pm | #1Resposta | Citao
Amigo bom dia. Gostaria de tirar uma duvida com relao ao projeto. O Projetoweb tenho que subi-lo junto com oprojetoEjbEAR?
1.
Silvnio Jniorabril 3, 2012 s 3:38 pm | #2Resposta | Citao
Bom dia Lennon,
No necessariamente,O Um arquivo ear um arquivo com formato JAR contendo uma aplicao J2EE(Enterprise Application Archive), ou seja nele voc ir colocar todos os projetos o ProjetoEjbClient,ProjetoEjb eo ProjetoWeb.
porm voc pode subir o ProjetoWeb separado dos projetos que esto no EAR.
Para subir o ProjetoWEB dentro do EAR vai em ProjetoEjbEAR -> Clica com o boto direito -> Properties-> Deployment Assembly e adiciona o ProjetoWeb.
Caso voc queira fazer remoto;
onde estiver
@EJBprivate ClienteRemote clienteRemote;
troque por:
@EJB(lookup=java:global/ProjetoEjbEAR/ProjetoEjb/ClienteSessionBean!br.com.tutorial.contratoEjb.ClienteRemote)private ClienteRemote clienteRemote;
isso so possivel porque marcamos a interface ClienteRemote como @REMOTE
Qualquer dvida estou a disposio.
-
Lennonabril 3, 2012 s 4:12 pm | #3Resposta | Citao
Silvanio, Obrigado pela resposta! uma duvida o meu cliente.xhtml teria que estar com a exteno .jsf? porque elenao entra na tela de cadastro de clientes. Ja foi mapeado as entidade no banco mysql. Acho que so falta mesmoessa ultima dela aparecer para eu conseguir cadastrar. Desde j agradeo!
2.
Silvnio Jniorabril 4, 2012 s 2:45 am | #4Resposta | Citao
Lennon, xhtml mesmo.
Quando voc foi configurar jsf em Projeto Facets voc informou a exteno?como est seu web.xml?
att,
3.
Silvnio Jniorabril 4, 2012 s 2:46 am | #5Resposta | Citao
Outra coisa, como est sua pgina xhtml, tem como postar aqui? talvez voc esqueceu de colocar o ou
4.
Lennonabril 4, 2012 s 12:50 pm | #6Resposta | Citao
Meu amigo! consegui botar pra funcionar a tela jsf! as duvidas que eu tenho e com relao ao grown id que tivermudar para um id diferente. Se no ele dava erro na hora de subir a tela da aplicao. E o datable de confirmaonas ultimas linhas realmente tem que ficar como comentario? Obrigado mesmo! Abraos!
5.
Lennonabril 4, 2012 s 2:00 pm | #7Resposta | Citao
6.
Thiago P.setembro 5, 2012 s 1:41 am | #8Resposta | Citao
Silvanio, estou tendo problemas quando vou acessar a interface remota. O meu objeto que est anotado com o@EJB sempre vem null, ou seja, no consigo uma instncia do EJB. Voc sabe o que pode ser? Obrigado eparabns pelo post.
7.
Silvnio Jniorsetembro 16, 2012 s 8:26 pm | #9Resposta | Citao
Da algum erro no console?
-
Netosetembro 16, 2012 s 8:15 pm | #10Resposta | Citao
Amigo boa tarde, estou com tal problema quando rodo a app Element type p:inputMask must be followed byeither attribute specifications, > or />. Qual seria a soluo
8.
Silvnio Jniorsetembro 16, 2012 s 8:25 pm | #11Resposta | Citao
Voc deve ta esquecendo de fechar a a tag inputMask,
ex:
abril 25, 2012 s 4:20 am | #1Configurando uma aplicao EJB 3.1, JPA e JSF 2 + PrimeFaces Projeto Final de Bloco (Holding Financeira)
1.
Deixe uma resposta
RSS feed
Posts Recentes
Tutorial JSF 2 + Primefaces + EJB 3 + JPA + GlassFish 3.1.1
Arquivos
fevereiro 2012
Categorias
Desenvolvimento JavaEngenharia de SoftwareTestes automatizados
Meta
Registrar-se
-
LoginPosts RSSRSS dos comentriosBlog no WordPress.com.
Topo WordPressBlog no WordPress.com. Tema: INove por NeoEase.
top related