[Resolvido] Duvida sobre Conceitos... ejb com interface remota e local

3 respostas
Andre_JavaWorld

Ola Pessoal,

Estou desenvolvendo um projeto bem complexo e estou usando ejb's, estou gostando muito e esta tudo indo muito bem, porem tive uma duvida de conceitos... se eu estou rodando uma aplicacao java ee e tenho um cliente j2se... porque eu nao posso fazer da seguinte forma se as duas aplicacoes estao rodando na mesma maquina?
FuncionarioService service = (FuncionarioService) ic.lookup("Realtx-ear/FuncionarioServiceImpl/local");
service.adicionar(funcionario);

Porem se faço desta forma…

FuncionarioService service = (FuncionarioService) ic.lookup("Realtx-ear/FuncionarioServiceImpl/remote");
service.adicionar(funcionario);

Funciona normalmente, lembrando que meu cliente é um cliente swing, tenho outro web e outro jme, mas no momento estou trabalhando com o swing, fazendo da maneira acima eu consigo chamar o servico atravez do jndi, nao tenho nenhum problema com o codigo, a unica duvida que tenho é porque nao posso chamar meu ejb localmente, se eles estao rodando na mesma maquina, e teoricamente na mesma jvm certo?

Agradeço Antecipadamente pelas respostas!

André Martins

3 Respostas

S

Olá amigo.

Geralmente em sistemas distribuidos, deixamos nossa view local com o browser e as Stand Alones (Swing) como remotas. Verifique se as sua interface @Local e @Remote estão bem definadas e bem implementadas. Sei que vc não teve problemas com código, mas é bom dar uma olhada no código para ver se esta tudo ok.

Qualquer coisa post um pedaço do código da classe onde vc define sua interface local e remota para podermos analisar melhor e ajudá-lo.

Um abraço

Andre_JavaWorld

Ola Marcelo,

Valeu pela ajuda! muito obrigado, o que realmente estava acontecendo era um simples erro, mas bem simples mesmo... hehe, cada vez que damos um "run" num projeto, uma nova instancia da jvm é criada, por isso so usamos instancias locais quando os clientes estao na mesma instancia do ejb, ou seja, dentro do mesmo servidor de aplicacoes, ao dar um start no meu projeto swing, ele iniciou outra instancia da jvm, consequentemente nao estava local ao projeto, isso fez com que eu tivesse este erro, mas agora ja foi tudo resolvido!

Abraços

André Martins

sergiotaborda

Andre_JavaWorld:
Ola Marcelo,

Valeu pela ajuda! muito obrigado, o que realmente estava acontecendo era um simples erro, mas bem simples mesmo... hehe, cada vez que damos um "run" num projeto, uma nova instancia da jvm é criada, por isso so usamos instancias locais quando os clientes estao na mesma instancia do ejb, ou seja, dentro do mesmo servidor de aplicacoes, ao dar um start no meu projeto swing, ele iniciou outra instancia da jvm, consequentemente nao estava local ao projeto, isso fez com que eu tivesse este erro, mas agora ja foi tudo resolvido!

Entenda que o conceito de remoto e local se refere à máquina vitual java (JVM) e não à máquina fisica.
quando vc inicia o servidor de aplicação e depois a interface swing, mesmo que na mesma maquina fisica , duas jvm serão iniciadas tornando o seu sistema distribuido (multi -jvm). é isto mesmo que se pretende e vc terá que usar a interface remota.

Se vc tentar corre a interface swing e o servidor de aplicação na mesma jvm (se conseguir essa proesa) isso estaria errado conceptualmente.

Criado 4 de outubro de 2009
Ultima resposta 6 de out. de 2009
Respostas 3
Participantes 3