Como acessar um Remote EJB?

5 respostas
R

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!!


5 Respostas

D

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.

P

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!

R

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

P

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

R

obrigado, Paulo, vou dar uma olhada nos exemplos!

Criado 30 de janeiro de 2013
Ultima resposta 30 de jan. de 2013
Respostas 5
Participantes 3