Lookup de EJB 2.1 no servidor WebSphere

Pessoal estou tentando fazer um lookup de um EJB 2.1 no WAS, mas não estou conseguindo criar o contexto.

Por favor aguem poderia me ajudar.

Agradeço.

Ninguém poderia me ajudar…

Coloque o código que você está tentando rodar e qual o problema que está ocorrendo que podemos tentar te ajudar.

Ok plentz, o problema eh que tenhu o código apenas no serviço, agora poderei coloca-lo aqui na segunda soh…Segunda de manhã vo postar o código aqui, obrigado mesmo assim…

Abraço.

Pessoal após alguns dias de tentativa consegui evoluir um pouco mas ainda estou encontrando problemas na hora de executar meu initialContext.

segue abaixo minha classe que realiza o initialContext e também a classe que implementa a chamada ao EJB.

ContextEJB:

public class ContextEJB {
	
    private ContextEJB(){
		
    }
    private static ContextEJB instance;
    
    public static ContextEJB getInstance(){

        if(instance == null){
            instance = new ContextEJB();
			
        }
    return instance;
    }
	
    private static InitialContext initialContext = null;
	
    private static Hashtable getEnvironmentProperties() {
        return null;
    }
	
	
    public Object lookup(String jndiName, Class narrowTo) throws NamingException {
        // Obtain initial context
		
        Object obj = null;

        try {
	initialContext = new javax.naming.InitialContext(getEnvironmentProperties());
	Object objRef = initialContext.lookup(jndiName);
	// only narrow if necessary
	if (java.rmi.Remote.class.isAssignableFrom(narrowTo))
	       obj = javax.rmi.PortableRemoteObject.narrow(objRef, narrowTo);
	else
	       obj = objRef;
	} catch (NamingException e) {
	       //throw new ServiceLocatorSefazException(e);
	      e.printStackTrace();
	} finally {
	      try {
		initialContext.close();
	      } catch (NamingException e) {
		//throw new ServiceLocatorSefazException(e);
		e.printStackTrace();
	      }
	}
	return obj;
	}	
}

Delegate onde estou executando a chamada a facade(EJB)

public class ClienteDelegate {
	
    private static final String CLIENTE_FACADE_EJB_HOME = "ejb/br/com/agencia/facade/ClienteFacadeHome";
    private ClienteFacade facade;
	
		
    public ClienteFacade context () throws RemoteException, CreateException{
        ClienteFacadeHome home = null;
		
        try {
	home = (ClienteFacadeHome) ContextEJB.getInstance().lookup(CLIENTE_FACADE_EJB_HOME, ClienteFacadeHome.class);
	
        } catch (NamingException e) {
	// TODO Bloco catch gerado automaticamente
	e.printStackTrace();
        }
        return home.create();
     }	
	
     public void insereCliente (ClienteTO to){
		
          try {
	facade = context();
          } catch (RemoteException e1) {
	// TODO Bloco catch gerado automaticamente
	e1.printStackTrace();
          } catch (CreateException e1) {
	// TODO Bloco catch gerado automaticamente
	e1.printStackTrace();
          }	
		
          try {
	facade.insereCliente(to);
          } catch (RemoteException e) {
	// TODO Bloco catch gerado automaticamente
	e.printStackTrace();
          } catch (SQLException e) {
	// TODO Bloco catch gerado automaticamente
	e.printStackTrace();
          }		
}

Segue abaixo o Erro que aparece na hora que tento executar o metodo
FACADE.INSERECLIENTE(TO)

Por favor se alguem puder me ajudar agradesso… Acredito que tenha que ser inserido um property na hora de criar a intancia

InitialContext initialContext = new InitialContext(property);

lembrando que estou utilizando o WAS como servidor.

Agradeço a todos.

opa…

o seu método getEnvironmentProperties() está retornando null…

e aí na hora q é criado o InitialContext é passado null como parametro… e da NullPointerException, claro

implemente o seu getEnvironmentProperties() da seguinte forma:

private static Hashtable getEnvironmentProperties() {
   Hashtable props = new Hashtable();
   props.put( javax.naming.Context.PROVIDER_URL, "IIOP://remote_host_ip_address:port" );
   props.put( javax.naming.Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory" );
   return props;
}

uma dica… carregue essas propriedades de um arquivo .properties… pois no caso de mudança de servidor, porta, ou qualquer outra coisa, vc nao precisa recompilar seu código.

outra dica: não faça singleton de Context… pode dar merda no caso de lookups de dentro de EJBs…

mais uma dica: troque de servidor de aplicalçao. websphere é um lixo, grandes chances de dar merda no seu projeto.