Nesse post eu vou mostrar como criar um Stateless Session Bean em um projeto EJB, utilizando a IDE Eclipse e o servidor JBoss 6.
Em posts anteriores eu mostrei como instalar e configurar essas ferramentas: Segue os links Instalar e configurar o JBoss 6 e Instalar o JBoss 6 no eclipse
Bom vamos lá então
O primeiro passo é criar um projeto EJB no eclipse, para isso clique em File/New/EJB Project.
Em Project Name digite helloworldEJB
Em Target Runtime, selecione o servidor JBoss 6.
Em EJB module version, selecione 3.1
Clique em Next, depois clique em Next Novamente e marque a opção Generate ejb-jar.xml deployment descryptor e clique em Finish.
Clique com o botão direito em cima do projeto helloworldEJB e em seguida clique em New/Session Bean
Na seguinte tela preencha os campos:
Java packpage: br.com.beans
Class Name: MeuPrimeiroBean
E marque a opção Local e preencha o campo com: br.com.beans.MeuPrimeiroBeanLocal
Desmarque a opção No-Interface
Clique em Finish.
Abra a interface local MeuPrimeiroBeanLocal.java e deixe a interface com o seguinte código:
package br.com.beans; import javax.ejb.Local; @Local public interface MeuPrimeiroBeanLocal { public void helloWorld(); }
Abra o Stateless Session Bean MeuPrimeiroBean.java e implemente o seguinte código:
package br.com.beans; import javax.ejb.Stateless; @Stateless public class MeuPrimeiroBean implements MeuPrimeiroBeanLocal { public MeuPrimeiroBean() { } @Override public void helloWorld() { System.out.println("Hello World"); } }
Pronto, nós criamos nosso primeiro Stateless Session Bean.
Agora nós vamos criar nosso projeto web para executar o nosso Stateless Session Bean.
Para criar o projeto web clique em File/New/Dinamic Web Project.
Crie o projeto web com o nome helloworldWEB.
Com o projeto criado, agora nós temos que configurar o projeto web para conseguir acessar as classes do projeto EJB. Para isso clique com o botão direito em cima do projeto web (helloworldWEB), em seguida clique em Build Path/Configure Build Path.
Clique na aba Projects, em seguida clique em Add e selecione o projeto EJB: helloworldEJB e clique em OK.
Clique em OK.
Agora nós vamos criar nosso Servlet que irá executar o nosso Stateless Session Bean.
Clique com o botão direito em cima do projeto helloworldWEB, em seguida clique em New/Servlet
Preencha os campos:
Java packpage: br.com.servlets
Class Name: MeuServlet
Clique em Finish.
Abra o Servlet MeuServlet no pacote be.com.servlets e digite o seguinte código:
package br.com.servlets; import java.io.IOException; import javax.ejb.EJB; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.beans.MeuPrimeiroBeanLocal; @WebServlet("/MeuServlet") public class MeuServlet extends HttpServlet { private static final long serialVersionUID = 1L; @EJB private MeuPrimeiroBeanLocal meuBean; public MeuServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { meuBean.helloWorld(); } }
Pronto, você criou o seu Servlet que irá executar o método helloWorld do nosso Stateless Session Bean.
Vamos criar uma página html para executar o nosso Servlet.
No projeto web, clique com o botão direito na pasta WebContent, em seguida clique em New/Html File.
No campo File Name digite: helloWorld e clique em Finish.
No nosso arquivo helloWorld.html digite o seguinte código:
Esse é meu primeiro EJB <h2>Esse é meu primeiro EJB</h2> <form action="MeuServlet" method="post">Clique no botão para você executar seu primeiro EJB <input type="submit" value="OK" /> </form>
Pronto o nosso projeto web está pronto.
Agora nós vamos criar um projeto EAR que irá conter os nossos dois projetos helloworldEJB e helloworldWEB. Esse projeto EAR é para fazer o deploy no servidor.
Para criar o noos projeto EAR clique em File/New/Enterprise Application Project.
No campo Project Name digite: helloworldEAR e clique em Next.
Nessa tela você irá selecionar os projetos que farão parte da nossa aplicação, que no caso são os projetos helloworldEJB e helloworldWEB.
Após selecionar os projetos clique em Finish.
Execute o JBoss 6.
Vamos fazer o deploy da nossa aplicação, no caso nós vamos precisar apenas fazer o deploy do nosso projeto helloworldEAR, pois nele contém as nossas duas aplicações, a aplicação web e a EJB.
Para fazer o deploy do projeto clique com o botão direito em cima do projeto EAR (helloworldEAR), em sequida clique em Export/EAR File.
No campo destination você deve selecionar a pasta deploy do JBoss.
Vai ser algo parecido com C:jboss-6.0.0.FinalserverdefaultdeployhelloworldEAR.ear
Clique em Finish.
Pronto você fez o deploy da nossa aplicação.
Agora com o JBoss rodando e com o deploy da nossa aplicação basta fazer o teste.
Abra seu navegador e acesse a página:
http://localhost:8080/helloworldWEB/helloWorld.html
Clique no botão OK para executar o nosso Servlet que irá executar o método do Stateless Session Bean.
Volte para o eclipse. Clique na aba Console e você verá algo como:
01:40:41,963 INFO [STDOUT] Hello World
Parabéns, você acabou de criar e executar o seu primeiro Stateless Session Bean.
Espero que tenham gostado do post.
Até o próximo post.
Muito legal a seqüência de post do JBoss. Parabéns!
Opa Fernando. Obrigado.
To postando coisas que eu me matei pra achar na net hehehe. Até pra consultas futuras e compartilhar com a comunidade.
Até +
Pingback: Exemplo JPA+JBoss+Eclipse « Bruno Rota
Fiz a instalação e a configuração do JBoss, mas na hora de criar um projeto não apareceu a opção de criar um projeto EJB no eclipse. O que pode ter sido que ocorreu de errado?
Luis. A opção de criar um projeto EJB no eclipse aparece apenas na versão Eclipse para JEE. Não tem nada a ver com a configuração do JBoss. Você instalou a versão do eclipse correta?
att.
Muito Bom
Opa Erick
Obrigado.
Bom dia, amigo.
Gostei muito desse tutorial, bastante explicativo. Ajudou de forma mais bacana.
Será que, por gentileza, poderia detalhar um tutorial sobre EJB+Jboss+Eclipse com conexão ao banco de dados PostgreSQL para saber entender as funcionalidades do CRUD no sistema de livraria (pessoa, livro, pedido e Item de Pedido) ? Se puder atender-me não só a mim e si m aos grandes admiradores dos seus trabalhos, devo um grandíssimo favor a ti de verdade. Meu nível de conhecimento do Java é um pouco acima do iniciante, mas bem longe do intermediário.
Agradeço cordialmente pela atenção.
Bom dia. Obrigado, que bom que esteja gostando dos tutoriais. Ultimamente estou realmente sem tempo, faz até muito tempo que eu não posto nada. Mas assim que tiver um tempinho livre eu vou fazer algo do tipo. Abraços.
Oi, sou vidrado em tecnologias web, java, EJB e JSF. Trabalho atualmente com WebSphere e venho me surpreendendo com o JBoss atualmente pela extrema simplicidade com que o servidor lidá com estas tecnologias, especialmente quando encontramos profissionais como você, focados em disseminar o conhecimento adquirido.
Meus mais sinceros parabéns pelo trabalho!
Quando tiver um tempinho dá uma passadinha também: http://www.diogosouza.com.br
Vlew’z!
Opa Diego, obrigado.
Eu dei uma passada no seu blog, e está bem bacana. Parabéns
Até +.
De verdade, muito obrigado. Levei horas percorrendo artigos pagos, livros de EJB, e na internet… até que achei… Tá favoritado.
É incrível que pessoas quando escrevem artigos sobre tecnologia não mostram o básico. Como configurar o projeto pqp. são só alguns prints!
Hehehe.
Que bom que gostou. Então criei esse post sobre EJB, porque foi minha principal dificuldade montar o ambiente de desenvolvimento, teoria nos livros achamos bastante, agora dar o primeiro passo foi dificil de encontrar hehehe.
Até +
Opa, segui o seu tutorial, achei que explicou muito bem, porem quando eu terminei e fui rodar a aplicação deu o erro HTTP Status 404 – /helloworldWEB/helloWorld.html
nao sei o motivo, acho que deve ser configuração (no servidor) pq eu fiz duas vezes e as duas deu esse mesmo erro.
Você saberia o motivo?
Aparece este erro:
Could not create JSR-77 EJBModule: helloworldEJB.jar: javax.management.InstanceAlreadyExistsException: jboss.management.local:j2eeType=EJBModule,J2EEServer=Local,J2EEApplication=helloworldEAR.ear,name=helloworldEJB.jar already registered.
Hummm
O Jboss está alegando que já existe um projeto helloworldEJB.
Esse erro normalmente acontece quando você faz o deploy pela ferramenta do eclipse, e depois tenta fazer o deploy na mão, indo em export, EAR Project.
Vá na pasta onde vc fez o deploy do EAR e remova o seu EAR.
No eclipse, na aba servers, clique com o botao direito clique em Add and Remove e remova o seu projeto.
Após isso, reinicie o JBoss e depois faça o deploy na “mão”, clicando com o botão direito em cima do projeto EAR, export/EAR Project, exporta o projeto na pasta deploy do jboss conforme o tutorial.
Tenta fazer isso.
Att.
Obrigado!
E parabéns pela clareza da informação.
amigo gostei da explicação estou usando o jboass 4.2 está pedindo o arquivo aplication.xml ele não consegue subir o ear. como faço para resolver o problema ?
me manda por email ademirmassini@gmail.com
Cara não posso te confirmar, mas quando eu estava usando EJB, eu comecei com o JBoss 4.2 e não conseguia fazer rodar nem com reza, fiquei uma semana tentando rodar, e depois eu li que o JBoss 4.2 não tinha suporte a annotations, ae eu alterei a versão do jboss para uma mais atual e funcionou, tenta rodar com uma versão do jboss mais atual pra ver se funciona.
Valeu Bruno vou tentar cara… no caso eu vi que realmente dentro do EAR não foi adicionado o arquivo application.xml
Obrigado pela atenção.
Bruno é isso mesmo , tem que ser com um JBoss superior pois tentei com o 4.2 e estava pedindo o arquivo No META-INF/application.xml e com o jboss-5.0.0.CR2-jdk6 consegui rodar numa boa , Valeu cara estava com dúvida de como funcionava a injeção do EJB e vc tirou minhas dúvidas …
Abraços. e
Deus te abençoe….
Opa que bom que pude ajudar.
Abraços.
Boa noite Bruno.
Gostei do tutorial, entretanto, a página não está rodando aqui pra mim, no mozilla aparece em branco. E no chrome mostra como arquivo corrompido.
Também não aparece nada no console do eclipse
O servidor está rodando direitinho….
Será que é porque meu eclipse é o indigo?
Bianca, não sei te responder apenas com essas informações, você verificou os passos novamente para ver se estão corretos?
Lança alguma exception?
Caso não tenta executar os passos com a versão do eclipse que eu usei, mas eu acho que não tem nada a ver.
Até +.
E ai tudo bem, ótimo tutorial,
Eu gerei o EAR houve uma exception falando que o aplication.xml não foi encontrado, ai resolvi colocar o .war e o .jar direto na pasta deploy, funcionou, porém no Servelt falta inicializar meuBem.
@EJB
private MeuPrimeiroBeanLocal meuBeam;
public MeuServlet() {
super();
meuBeam = new MeuPrimeiroBean();
}
caso contrário no meu dá um exception de NullPointer
Gelson
Não e possível instanciar um bean com new
Para você recuperar a instância de um bean você deve usar a injeção de dependência que é com o @EJB ou recuperar o bean utilizando Lookup
Você está usando qual jboss?
Até +
Olá,boa noite,
É necessário criar um EAR com a aplicação web + EJB ?
não existe uma forma de executar o ejb deixá-los acoplados?
obrigado
Existe sim.
Basta fazer o deploy dos projetos EJB e Web separados.
Até +
Obrigado! Funcionou perfeitamente.
Opa Fabiano.
Que bom que te ajudou.
Até +
Excelente!
Rápido, Claro e Fácil de entender!
Parabéns!
Opa Jonas
Que bom que gostou.
Obrigado.
Abraçoss.
Parabéns pelo tutorial.. Gostaria de segui-lo em algum site ou matricular em algum curso que venha ministrar.. Ou adquiri algum livro que tenha lançado.. Abç
Opa Jairo, fico feliz por ter ajudado. No momento não estou com nenhum curso. Mas quem sabe num futuro próximo?. Obrigadooo. Abraçoss