Dúvida RMI

Olá pessoal tenho duas aplicações, uma é o software em si e a outra é o programa que que envia e recebe mensagens via RMI como eu faço para comunicar meu software com esse programa?

Lembrando que: O programa RMI tem

  • Uma classe onde ficam os métodos construtores,
  • Uma classe que os publica,
  • Uma Interface
  • e o arquivo cliente que é aquele que faz as solicitações

O que quero exatamante é como eu incluo no meu software esse arquivo cliente?

Estou com essa dúvida pq os arquivos do programa RMI não podem utilizar package e meu sofware utiliza package afim de evitar muitos imports.

E eu utilizando esse arquivo ele não vai achar o arquivo de interface mesmo eu fazendo o import. Alguém poderia me ajudar?

A interface tem que estar no teu classpath.

Desde teu programa, e so chamar o metodo lookup da clase Naming.

ObjetoRemote o = (ObjetoRemote) Naming.lookup("http://<ip>/<nome>")

onde é o nome com o qual o objeto foi registrado.

Já fiz isso:

InterfaceServidor m = (InterfaceServidor) Naming.lookup("rmi://localhost/MensageiroService");

Minha dúvida é integarar isso na minha aplicação

Acho que não entendi direito mas vamo la.

Você tem duas aplicações que vão rodar. A primeira vai registrar o objeto no servidor RMI e a segunda vai pegar aquele objeto.

Na primeira aplicação você vai precisar da interface e a implementação no classpath. Na segunda aplicação somente precisa da interface no classpath.

Para a primeira aplicação registrar o objeto no servidor RMI ela tem que executar:

Naming.rebind("MeuObjeto", new MeuObjeto);

lembrando que MeuObjeto é a implementação e não a interface.

Para o cliente pegar aquele objeto registrado, vai ter que ser executado na segunda aplicação:

MeuObjetoRemote o = (MeuObjetoRemote) Naming.lookup("//<ip>/MeuObjeto");

A partir desse momento você ja pode começar a utilizar teu objeto sem problemas, considerando que todos os métodos serão executados pela máquina que registro ele.