É o seguinte tenho um projeto onde tenho um cliente e um servidor rmi no mesmo pacote, mas quando tento separar para colocar em maquinas separadas acotecem varios erros…
Alguem sabe passo a passo o que fazer para separar cliente e servidor?
Bom, vou listar aqui o que você necessita para, a partir de uma classe cliente, acessar um método numa pacote servidor:
Pacote servidor:
- Interface:
- declara o método a ser chamado pelo cliente.
- extende a superclasse Remote.
- Classe que faz o trabalho todo
- extende a superclasse UnicastRemoteObject
- implementa a interface que você criou
- ao instanciar um objeto desta classe (neste caso no método main), você tem que vincula-lo ao rmiregistry. Exemplo
MinhaClasseCompartilhada classe = new MinhaClasseCompartilhada;
String serverName = "//localhost/MinhaClasseCompartilhada";
Naming.rebind( serverName, classe );
Classe cliente:
- para acessar o método da classe server, faça o seguinte:
String serverName = "//ipdamaquinaAlvo/MinhaClasseCompartilhada";
MinhaInterface minhaInterface = ( MinhaInterface ) Naming.lookup( serverName );
- agora é só brincar. Todos os métodos compartilhados estarão disponíveis como métodos da instancia de MinhaInterface
[quote=“LIPE”]Não entendi “procedimentos de separação”.
Bom, vou listar aqui o que você necessita para, a partir de uma classe cliente, acessar um método numa pacote servidor:
[code]
Pacote servidor:
- Interface:
- declara o método a ser chamado pelo cliente.
- extende a superclasse Remote.
- Classe que faz o trabalho todo
- extende a superclasse UnicastRemoteObject
- implementa a interface que você criou
- ao instanciar um objeto desta classe (neste caso no método main), você tem que vincula-lo ao rmiregistry. Exemplo
MinhaClasseCompartilhada classe = new MinhaClasseCompartilhada;
String serverName = "//localhost/MinhaClasseCompartilhada";
Naming.rebind( serverName, classe );
Classe cliente:
- para acessar o método da classe server, faça o seguinte:
String serverName = "//ipdamaquinaAlvo/MinhaClasseCompartilhada";
MinhaInterface minhaInterface = ( MinhaInterface ) Naming.lookup( serverName );
- agora é só brincar. Todos os métodos compartilhados estarão disponíveis como métodos da instancia de MinhaInterface
[/code][/quote]
Blz…é isso mesmo e como que coloco o cliente em um computador e o servidor em outro?? E outra como faço para vincular no rmiregistry???
A vinculação se da como no exemplo que eu coloquei. Novamente:
MinhaClasseCompartilhada classe = new MinhaClasseCompartilhada;
String serverName = "//localhost/MinhaClasseCompartilhada";
Naming.rebind( serverName, classe );
E para colocar um em cada computador é só distribuir cada pacote normalmente e executa-los, seja la em qual computador for oras.
Para saber mais sobre distribuição, leia o tópico fixo no forum java basico