Localizar o EJB Remotamente

5 respostas
O

Pessoal veja bem estou tentando fazer um lookup no ejb e não estou conseguindo.
Eu criei um module ejb e publiquei no jboss , Fiz uma aplicação Swing para acessar o componente e não estou conseguindo . Segue trecho do código :

public void EnviarEmai(String nomeEmail){
try{

InitialContext ic = new InitialContext();
   Object ref = ic.lookup("EnvioDeEmail");
   EnvioDeEmailHome mailHome = (EnvioDeEmailHome)PortableRemoteObject.narrow(ref,EnvioDeEmailHome.class);                         
   EnvioDeEmail mail = mailHome.create();
   mail.EnviarEmai(nomeEmail);
     
     }catch(Exception e){
        System.out.println("Erro = "+e.getMessage());
     }
}

Dá essa mensagem de erro :

Erro = 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

me dá uma ajuda como faço ? :oops:

5 Respostas

A

Vc tem que dizer para o InitialContext aonde localizar o EJB, e qual e a classe de factory para o contexto. Para o JBOSS se não me engano é assim:

Hashtable hash = new Hashtable(); hash.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); hash.put(Context.PROVIDER_URL, "localhost:1099"); Context ctx = new InitialContext(hash)

luiz_ross

tem que adicionar no classpath da sua app client a lib jbossall-client.jar, se não não vai funcionar mesmo e coloca essas 3 linhas

t.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
            t.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); 
            t.put(Context.PROVIDER_URL, "jnp://localhost:1099");
O

Meu querido dessa forma eu não perco a transparência de localização

O

Fia exatamente o que você falou e deu esse erro :

java.lang.NoClassDefFoundError: org/jboss/logging/Logger

at org.jnp.interfaces.NamingContext.<clinit>(NamingContext.java:102)

at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingContextFactory.java:41)

at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)

at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)

at javax.naming.InitialContext.init(InitialContext.java:219)

at javax.naming.InitialContext.<init>(InitialContext.java:195)

O que faço ?

clone_do_zealot

sobre o teu 1º problema:
ou tu faz como o pessoal falou, coloca no proprio codigo(oq eu desaconselho)
ou
tu coloca no classpath um arquivo chamado jndi.properties, q tem esta propriedades…

sobre este noClassDefFound:
tu tem q colocar no classpath da aplicação o log4j.jar

acho q é só isso

Criado 10 de dezembro de 2004
Ultima resposta 19 de dez. de 2004
Respostas 5
Participantes 4