Problema em rodar exemplo de EJB [RESOLVIDO]

1 resposta
brunorota

Boa noite galera

Estou iniciando com EJB, e estou apanhando muito

Bom vamos lá

Eu criei um projeto ejb no eclipse da seguinte forma

File, new Project, EJB project, selecionei o JBoss como servidor e tals

blz

Criei a interface remota do meu bean

package br.com.beans;
import javax.ejb.Remote;

@Remote
public interface MyFirstBeanRemote {

	public String helloBean();
}

a classe de implementação do bean

package br.com.beans;

import javax.ejb.Stateless;

@Stateless(mappedName = "Example")
public class MyFirstBean implements MyFirstBeanRemote {

    public MyFirstBean() {
       
    }

	@Override
	public String helloBean() {
		
		return "Olá";
	}

}

e a classe para testar o bean

package br.com.beans;

import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Teste {

	public void runTest() throws NamingException{
		
		InitialContext ctx = new InitialContext();
		MyFirstBean bean = (MyFirstBean) ctx.lookup("Example");
		String result = bean.helloBean();
		System.out.println(result);
	}
	
	public static void main(String args[]){
		
		Teste t = new Teste();
		try {
			t.runTest();
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Eu fiz o deploy do projeto no JBoss e inicializei o JBoss

Tentei executar essa classe e deu o seguinte erro

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
	at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
	at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
	at javax.naming.InitialContext.lookup(Unknown Source)
	at br.com.beans.Teste.runTest(Teste.java:11)
	at br.com.beans.Teste.main(Teste.java:20)

Gostaria de saber o que é esse erro e se o passo a passo do meu exemplo está certo

Atenciosamente

1 Resposta

brunorota

Ae galera

Resolvi o problema, acontece que o JBoss 4.2 não fumega a annotation @EJB, fiz um exemplo com o JBoss 6, segue abaixo o código:

package br.com.beans;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class MyFirstBean
 */
@Stateless
public class MyFirstBean implements MyFirstBeanLocal {

    /**
     * Default constructor. 
     */
    public MyFirstBean() {
        // TODO Auto-generated constructor stub
    }
    
    public void helloWorld(){
    	System.out.println("Hello World");
    }

}
import java.io.IOException;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jboss.weld.context.ejb.Ejb;

import br.com.beans.MyFirstBeanLocal;

/**
 * Servlet implementation class ServletTeste
 */
public class ServletTeste extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	@EJB
	private MyFirstBeanLocal ejb;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ServletTeste() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ejb.helloWorld();
	}

}


Valeww
Criado 25 de janeiro de 2011
Ultima resposta 2 de fev. de 2011
Respostas 1
Participantes 1