Erro fazendo lookup de um EJB no JBoss

Pessoal

Tenho um projeto EAR com um módulo WEB, um módulo EJB e um EJBClient, implantados num servidor JBoss 4.2.3.

Quando faço o deploy deste EAR, tudo parece executar sem problemas e meus EJB’s parecem ser implantados no servidor.

Dentre as mensagens do log, há a seguinte:

Porém, se eu tenho fazer um lookup deste EJB, ocorre o seguinte erro:

Estou tentando fazer este lookup da seguinte forma:

Context jndiContext = new InitialContext();
UsuarioServiceLocal usuarioService = (UsuarioServiceLocal) jndiContext.lookup("UsuarioServiceBean/local");

O que pode estar acontecendo? Há algo errado ou eu fiz algo errado? Aparentemente está certo, pois estou usando o ejbName que saiu no log de deploy para fazer o lookup, não?

Caso ajude, aqui está o código deste EJB:

UsuarioServiceLocal.java

package services;
import javax.ejb.Local;

import entities.Usuario;

@Local
public interface UsuarioServiceLocal {

	public Usuario getUsuario(String usuario);
	
}

UsuarioServiceBean.java

package services;

import javax.ejb.Stateless;

import dao.UsuarioDAO;
import dao.factory.DAOFactory;
import dao.hibernate.factory.HibernateDAOFactory;
import entities.Usuario;

/**
 * Session Bean implementation class UsuarioServiceBean
 */
@Stateless
public class UsuarioServiceBean implements UsuarioServiceLocal {

    /**
     * Default constructor. 
     */
    public UsuarioServiceBean() {
        // TODO Auto-generated constructor stub
    }
    
    public Usuario getUsuario(String login){
        DAOFactory daoFactory = HibernateDAOFactory.getInstance();
        UsuarioDAO usuarioDAO = daoFactory.getUsuarioDAO();
        
        Usuario usuario = usuarioDAO.findByLogin(login);

        return usuario;
    }

}

Alguma idéia?

Obrigado

ola diego

o lookup voce esta fazendo a partir de alguem que tambem esta dentro do container? se nao, precisa ser @Remote, mas de qualquer maneira o erro seria outro. ta estranho. posta o cliente!

[quote=Paulo Silveira]ola diego

o lookup voce esta fazendo a partir de alguem que tambem esta dentro do container? se nao, precisa ser @Remote, mas de qualquer maneira o erro seria outro. ta estranho. posta o cliente![/quote]

Olá Paulo,

Estou fazendo o lookup de dentro da aplicação WEB, que está dentro do mesmo EAR que contém a aplicação EJB. Este EAR tem um projeto WEB, um projeto EJB e um EJBClient.

Este projeto WEB está no mesmo JBoss que o projeto EJB, mas logicamente fora do EJB Container que contém o projeto EJB?

Acho que compliquei um pouco, né? Deu pra entender?

Tentei de várias maneiras já, fazer o lookup. A mais simples que fiz até agora foi a que postei no primeiro post, de dentro do doGet() de um servlet:

Context jndiContext = new InitialContext();  
UsuarioServiceLocal usuarioService = (UsuarioServiceLocal) jndiContext.lookup("UsuarioServiceBean/local");  

O que pode estar acontecendo de errado ou o que eu posso estar fazendo de errado?

Muito obrigado!

Deve estar faltando alguma coisa em sua String JNDI.
Vá no jmx-console do jboss e clique no MBean “jboss:service=JNDIView”. Clique agora na operação “lis()” através do botão invoke.

Ele irá listar seu EJB, provavelmente quase no final da página, abaixo da namespace GLOBAL. Note que é uma estrutura em árvore, onde os nodes são subcategorizados pelo sinal de “+”. Verifique se o nome pelo qual você esta invocando seu EJB esta correto com a estrutura exibida nesta página.

[]s