Como registrar um jndi

to precisando de registrar meu bean em um jndi. Alguém poderia me explicar como faco isso, é que sou novo em j2ee.

De q tipo de bean se trata? E qual o server q vc está utilizando?

é um bean @stateless comum que estou criando para uma aplicação client/servidor para Desktop. Sou novo em J2EE e estou com esse problema, não consigo encontrar o bean e nem inicializar o InitialContext() de nenhum dos containers(nenhum mesmo), JBoss,Weblogic, glassfish, openejb, já tentei qualquer tipo de inicialização do contexto.

Kra se vc estiver usando um container JEE6 (como o Glassfishv3) todos os EJBs tem um nome JNDI global q é apresentado no momento q vc implanta os EJBs no servidor. Basta dar uma olhada no log (é mais fácil se vc fizer pelo Netbeans). Mas p/ desenvolver uma aplicação cliente/servidor com um cliente Desktop eu acho q no final das contas REST vai te oferecer a menor dor de cabeça.

REST é um WebService? É que preciso de uma aplicação com controle de sessões. E outra só estou com problema na hora de instanciar o InitialContext. Tipo, eu procurei em tudo quanto é tipo de forum pesquisei ate cansar e nada disso funcionar, até copiei as bibliotecas do j2ee(appserv-rt.jar, javaee.jar,gf-client.jar) e nenhum conseguiu inicialisar o com.sun.enterprise.naming.SerialInitialContextFactory. Poderia me dizer por favor qual classe tenho que inicializar com o InitialContext? o meu codigo ta embaixo

prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.SerialInitialContextFactory");
prop.setProperty(Context.PROVIDER_URL,iiop://ipaddress:port);
InitialContext ctx = new InitialContext(prop);
BeanRemote bean = (BeanRemote)ctx.doLookup("java:global/ProjetoBean/BeanPrincipal");
System.out.print(bean.soma(5,2));

Alguem me ajude por favor.

O seguinte código funcionou p/ mim.

package helloswing;

/**
 * @author dev.rafael
 */
public interface HelloCarrier {

    String getHello();

}
package helloswing;

import javax.ejb.Remote;
import javax.ejb.Stateless;

/**
 * @author dev.rafael
 */
@Stateless
@Remote(HelloCarrier.class)
public class StaticHelloCarrier implements HelloCarrier {

    @Override
    public String getHello() {
        return "Hello you!!";
    }

}
package helloswing;

import javax.ejb.EJB;

/**
 * @author dev.rafael
 */
public class Main {

    @EJB static HelloCarrier helloCarrier;

    public static void main(String[] args) {
        System.out.println(helloCarrier.getHello());
    }

}

Nesse caso eu empacotei a aplicação cliente dentro do EAR gerado. Eu usei o Netbeans q possui o recurso de criar aplicações enterprise com cliente desktop.

isso funciona qndo vc executa pelo netbeans. Mas qndo roda fora ele diz que não encontrar o local do doLookup(name).

Ele continuará a funcionar se vc distribuir a sua aplicação com JNLP.

Estou com o mesmo problema do colega… estou iniciando em EJB.

Criei um EJB de sessão (stateless) e o publiquei no Glassfish v2… Indo no localhost:4848 e entrando como admin vejo que o módulo EJB que criei está lá, implantado como “ejb/SimpleConverter”…

Mas quando tento acessar o EJB de uma aplicação desktop usando:

[code]Context initial = new InitialContext();

Context myEnv = (Context) initial.lookup(“java:comp/env”);

Object objref = myEnv.lookup(“ejb/SimpleConverter”);[/code]

ocorre uma exceção; não encontra nada!! (já na segunda linha ocorre o erro).

Não sei como configurar esse JNDI para que não ocorra erro… Por favor, uma ajuda!!

Grato a tds.

Depois de muito pesquisar eu acabei achando algo q pode solucionar o seu problema, ao menos é o q eu espero:

public class Main {

    public static void main(String[] args) throws NamingException {
        Properties props = new Properties();
        props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
        props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
        props.setProperty("org.omg.CORBA.ORBInitialPort", "9037");
        Context ctx = new InitialContext(props);
        Foo foo = (Foo) ctx.lookup("java:global/EJBs/EJBs-ejb/FooBean");
        System.out.println(foo.hello());
    }

}

Esse ai funciona certinho dentro e fora do Netbeans. Divirta-se.