Tutorial EJB+Jboss+Eclipse


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.

34 ideias sobre “Tutorial EJB+Jboss+Eclipse

  1. Pingback: Exemplo JPA+JBoss+Eclipse « Bruno Rota

  2. Luis Marcelo

    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?

    Responder
    1. brunorota Autor do post

      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.

      Responder
  3. Hans Gruber

    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.

    Responder
    1. brunorota Autor do post

      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.

      Responder
  4. Diogo Souza

    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!

    Responder
  5. Felipe Lauksas

    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!

    Responder
    1. brunorota Autor do post

      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é +

      Responder
  6. Sheen BM

    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?

    Responder
    1. Sheen BM

      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.

      Responder
      1. brunorota Autor do post

        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.

        Responder
    1. brunorota Autor do post

      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.

      Responder
  7. ademir magela

    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.

    Responder
  8. ademir magela

    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….

    Responder
  9. Bianca

    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?

    Responder
    1. brunorota Autor do post

      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é +.

      Responder
  10. Gelson

    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

    Responder
    1. brunorota Autor do post

      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é +

      Responder
  11. Bruno

    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

    Responder
    1. brunorota Autor do post

      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

      Responder

Deixe uma resposta para Diego Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *