Como acessar um Remote EJB?

olá, galera, estou aprendo javaEE 6 e tenho uma dúvida:
tenho esse ejb:

@Remote
public interface BookEJBRemote{//crud methods}

@Stateless
@LocalBean
public class BookEJB implements BookEJBRemote{//methods}

publiquei no glassFish como Study_javaEE.jar (ver img anexada)
Como posso acessar esse EJB a partir de um cliente desktop como segue ??

public class Client{

       public static void main(String[] args) throws Exception {
                 Context ctx = new InitialContext();
                 BookEJB bbookEJB = (BookEJB) ctx.lookup("java:global/Study_javaEE/BookEJBRemote");
                 System.out.println(bbookEJB);
       }
}

ao rodar o código anterior obtive:

Exception in thread "main" 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

obrigado!!


Nunca fiz essa chamada ao glassfish, mas, no JBoss, por exemplo, existe um arquivo de propriedades que determina certas configurações necessárias, como o endereço do servidor e porta pela qual a conexão JNDI deve ser realizada. Talvez esteja faltando isto aí pra teu projeto dar certo.

Olá amigo, vc está publicando o seu EJB no Application Server certo? tipo glasfish ou JBoss…

Para acessar em uma aplicação desqtop vc precisa iniciar o contexto, apontando para um JNDI que faz interfce de lookup do server que hospeda seu EJB, no caso o seu Glasfish ou JBoss

É simples

veja os links:

http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish
http://docs.oracle.com/cd/B15904_01/web.1012/b15505/access.htm
http://www.codeproject.com/Articles/25741/EJB-3-0-Remote-Session-Bean-Lookup

fica a dica
bons estudos!

como e onde “setto” o endereço do servidor e outras propriedades necessárias, estou fuçando aqui com alguns exemplos pela web, mas continua dando aquela exception.
meu glassFish atualmente está em: http://localhost:8080/

vi num livro que uma vez que vc faz o deploy de um session bean no container, ele automaticamente define um nome JNDI

Sim, define um nome JNDI, porém no contexto do server.

Sua aplicação desktop não está dentro do contexto do server, por isso vc precisa acessar esse contexto remotamente.
Veja o ultimo link que te passei no post, é exatamente o que vc quer fazer.
Abraço

obrigado, Paulo, vou dar uma olhada nos exemplos!