Funcionamento ejb+remote+jndi+rmi [RESOLVIDO]

Oi pessoal

Estou estudando sobre ejb, mas não ficou bem claro como que funciona a parte do remote, quero dizer como que é feito o retorno do ejb quando ele é remoto.
Sei que utiliza o jndi para encontar o ejb que estou chamado e que retorna ou executa o metodo pelo RMI (acho que é isso), mas gostaria de entender melhor como que é feito isso. Sei que o container é quem é o responsável e que deveria ficar transparente para o desenvolvedor, porem gostaria de entender melhor. Alguém pode me passar algum material que explique o fluxo de quando é chamado um ejb remoto (como acha pelo jndi e como acha pelo rmi)?
obrigada

Pela sua descrição parece que você entendeu bem como funciona o processo. O resto são camadas mais baixas.

Exemplo:

o seu servidor de aplicação possui uma instância de um objeto, seu session bean, e ele está associado a um endereço JNDI.

Alguma máquina remota faz o lookup desse objeto, e é retornada para ela um proxy, uma extensão, que não é o objeto em si.
Quando você invoca um método nesse proxy, a invocação é enviada ao container pela camada de rede (é aqui que entra o RMI).

o processamento ocorre no servidor de aplicação e a resposta é retornada.

Todas as chamadas são chamadas remotas, por isso que (se não me engano) no EJB 2.1, todos os métodos deviam declarar que lançam RemoteException na sua definição.

cliente > chama um metodo de um ejb remote > o ejb chamado esta associando a um endereço no jndi (em que momento??? como??) > jndi acha qual o ejb que o cliente quer > depois nisso passa a responsabilidade para o rmi > rmi registra e armazena a referencia (que na verdade é um proxy) do ejb chamado > rmi executa o metodo> rmi retorna para o cliente e resultado do metodo.

é assim? :shock:

Sendo EJBs eles normalmente já são associados a endereços JNDI assim que eles fazem o deploy, tudo é preparado no start.

Não é bem “passa a responsabilidade para o RMI”, a especificação EJB abstrai a complexidade do RMI. Então por baixo do EJB é RMI por baixo, e por baixo do RMI é uma camada ainda mais abaixo.

EJB é uma especificação que foi criada justamente pra abstrair essa complexidade toda, e trazer produtividade para o desenvolvedor. Dando um container cheio de features e facilidades que você configura (ao invés de desenvolver) e deixando o desenvolvedor se preocupar só com a lógica de negócio da aplicação.

Claro que pra você realmente aproveitar o máximo dessa arquitetura você precisa entender bem como os EJBs funcionam, essa configuração mágica nem sempre é tão trivial.

O importante de se lembrar do fluxo é que você faz uma chamada remota, existe tráfego na rede, e o objeto que você tem localmente ao fazer o lookup é só uma extensão do objeto real.

Entendi o fluxo, mas entendi também que agora não é o momento de me aprofundar no que acontece por baixo nos panos.
Obrigada Rodrigo!