tutorial jsf 2 + primefaces + ejb 3 + jpa + glassfish 3.1.1 _ silvânio júnior

Upload: jura-costa

Post on 30-Oct-2015

269 views

Category:

Documents


1 download

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: [email protected]

    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.