![]() |
|
||||
Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Você está aqui: Java ::: RMI - Remote Method Invocation ::: Passos Iniciais |
Aprenda a escrever sua primeira aplicação RMI usando NetBeansQuantidade de visualizações: 14179 vezes |
|
Nesta dica mostrarei passo-a-passo como escrever um aplicação RMI bem simples usando a IDE NetBeans (aqui usei a versão 6.9.1). Note, contudo, que isso não o(a) liberará da tarefa de executar alguns comandos na janela do Prompt de comando. Desta forma, se você ainda não sabe como fazê-lo ou se as variáveis de ambiente PATH e CLASSPATH lhe dão arrepios, aproveite e reveja algumas de minhas dicas sobre o assunto antes de iniciar. Sobre a aplicação A aplicação RMI que escreveremos é realmente muito simples. Trata-se de uma calculadora que recebe dois inteiros e devolve sua soma. A aplicação cliente se conectará à aplicação servidor, enviará dois valores inteiros e o servidor devolverá a soma dos valores informados. Lembre-se de que usaremos apenas RMI, nada de sockets envolvidos nesta dica (somentes nos bastidores, é claro). Escrevendo a aplicação RMI servidor O primeiro passo para escrever a aplicação cliente é abrir o NetBeans. Em seguida vá até a opção Arquivo -> Novo Projeto. Na janela de novo projeto escolha Java de um lado e Aplicativo Java do outro. Clique o botão Próximo. Dê o nome "CalculadoraServidor" ao projeto e salve-o no diretório "C:\estudos_rmi" de forma que a pasta do projeto seja "C:\estudos_rmi\CalculadoraServidor". Clique o botão Finalizar. Vamos começar criando a interface remota, que será compartilhada tanto pela aplicação servidor quanto pela aplicação cliente. Assim, vá na opção Arquivo -> Novo Arquivo. Na janela Novo arquivo escolha Java de um lado e Interface Java do outro. Clique o botão Próximo. Dê o nome "CalculadoraServerInterface" à interface e selecione o pacote "calculadoraservidor". Clique o botão Finalizar. Altere o código do arquivo CalculadoraServerInterface.java para a versão mostrada abaixo: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package calculadoraservidor;
import java.rmi.*;
public interface CalculadoraServerInterface extends Remote{
// método público que recebe dois valores inteiros e
// retorna sua soma
public int somar(int a, int b) throws RemoteException;
}
Aqui nós temos um método somar() que recebe dois inteiros e retorna sua soma. Vamos agora escrever uma classe que implementa esta interface. Vá na opção Arquivo -> Novo Arquivo. Na janela Novo arquivo escolha Java de um lado e Classe Java do outro. Clique o botão Próximo. Dê o nome "CalculadoraServerInterfaceImpl" à classe e selecione o pacote "calculadoraservidor". Clique o botão Finalizar. Altere o código do arquivo CalculadoraServerInterfaceImpl.java para a versão mostrada abaixo: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package calculadoraservidor;
import java.rmi.*;
import java.rmi.server.*;
public class CalculadoraServerInterfaceImpl extends UnicastRemoteObject
implements CalculadoraServerInterface{
public CalculadoraServerInterfaceImpl() throws RemoteException{
// construtor padrão
}
// método público que recebe dois valores inteiros e
// retorna sua soma
public int somar(int a, int b) throws RemoteException{
return a + b;
}
}
Agora já podemos implementar o servidor e registrá-lo com o RMI server. Altere o código do arquivo Main.java para a seguinte versão: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package calculadoraservidor;
import java.rmi.registry.*;
public class Main {
public static void main(String[] args) {
try {
CalculadoraServerInterface csi = new CalculadoraServerInterfaceImpl();
Registry registry = LocateRegistry.getRegistry();
registry.rebind("CalculadoraServerInterfaceImpl", csi);
System.out.println("Servidor Calculadora " + csi +
" registrado e pronto para aceitar solicitações.");
}
catch (Exception ex) {
System.out.println("Houve um erro: " + ex.getMessage());
}
}
}
Pronto! A aplicação servidor já está concluída. Pressione F6 para executá-la. Teremos o seguinte erro de tempo de execução: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Houve um erro: Connection refused to host: 192.168.1.64; nested exception is: java.net.ConnectException: Connection refused: connect Isso aconteceu porque não iniciamos o RMI Registry. Para isso, abra uma janela de comando e dispare: start rmiregistry Isso fará com que uma nova janela de comando seja aberta. Não a feche. O RMI Registry está sendo executado nela. Volte à aplicação e pressione F6 novamente. Agora o erro de tempo de execução é: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Houve um erro: RemoteException occurred in server thread; nested exception is: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: java.lang.ClassNotFoundException: calculadoraservidor.CalculadoraServerInterface Este erro ocorreu porque o RMI Registry não conseguiu encontrar nenhuma informação a respeito da interface CalculadoraServerInterface. Para contornarmos este problema, vamos apenas construir a aplicação (pressionando F11 ou acessando Executar -> Construir projeto principal) e executá-la a partir do jar gerado (CalculadoraServidor.jar). Assim, abra uma janela de terminal e vá até o diretório de sua localização: cd C:\estudos_rmi\CalculadoraServidor\dist e dispare: java -jar CalculadoraServidor.jar Mesmo erro, não? Pare o RMI (Ctrl + C), feche todas as janelas de comando e adicione o valor "C:\estudos_rmi\CalculadoraServidor\dist\CalculadoraServidor.jar;" à sua variável de CLASSPATH. Inicie o RMI novamente, abra uma nova janela de terminal, vá até o diretório "C:\estudos_rmi\CalculadoraServidor\dist" e execute o JAR novamente. Se tudo correu bem você terá o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Servidor Calculadora CalculadoraServerInterfaceImpl[UnicastServerRef [liveRef: [ endpoint:[192.168.1.64:4634](local),objID:[4124a53a:12e63b2ebea:-7fff, 383998976 7738511284]]]] registrado e pronto para aceitar solicitações. Esta mensagem indica que o servidor RMI está 100% funcionando e pronto para atender às requisições do cliente. Hora de passarmos ao desenvolvimento do cliente. Nota importante: Neste momento você já consegue executar a aplicação servidor a partir do NetBeans. Mas, é recomendável executá-la a partir do Prompt de comando, uma vez que a aplicação servidor deverá estar rodando quando a aplicação cliente for executada. Escrevendo a aplicação RMI cliente Vamos então escrever a aplicação RMI cliente. Vá até a opção Arquivo -> Novo Projeto. Na janela de novo projeto escolha Java de um lado e Aplicativo Java do outro. Clique o botão Próximo. Dê o nome "CalculadoraServidor" ao projeto e salve-o no diretório "C:\estudos_rmi" de forma que a pasta do projeto seja "C:\estudos_rmi\CalculadoraCliente". Clique o botão Finalizar. Na aplicação cliente nós precisaremos referenciar a interface CalculadoraServerInterface, que é parte da aplicação servidor. Assim, clique com o botão direito em Biblitecas e escolha a opção Adicionar JAR/Pasta. Localize o diretório "C:\estudos_rmi\CalculadoraServidor\dist", selecione o JAR CalculadoraServidor.jar e clique o botão Open. Agora modifique o Main.java para a seguinte versão: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package calculadoracliente;
import java.rmi.registry.*;
import calculadoraservidor.*;
public class Main {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry("localhost");
CalculadoraServerInterface c = (CalculadoraServerInterface)
registry.lookup("CalculadoraServerInterfaceImpl");
System.out.println("O objeto servidor " + c + " foi encontrado com sucesso.\n");
// vamos efetuar uma soma?
System.out.println("A soma de 2 + 5 é: " + c.somar(2, 5));
}
catch(Exception ex){
System.out.println(ex);
}
}
}
A aplicação cliente pode ser executada a partir do NetBeans mesmo (com o RMI Registry ativo e a aplicação Servidor em execução, é claro). Basta pressionar F6 e teremos o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- O objeto servidor Proxy[CalculadoraServerInterface, RemoteObjectInvocationHandler[UnicastRef [liveRef: [endpoint:[192.168.1.64:4649](remote),objID:[4d4c1a57:12e63bb67ba:-7fff, 3392955188099866234]]]]] foi encontrado com sucesso. A soma de 2 + 5 é: 7 Esta dica demonstra "pacientemente" como escrever sua primeira aplicação RMI usando a IDE NetBeans. Devido ao espaço restrito, não pude descrever o funcionamento detalhado de cada uma das partes envolvidas. Continue vendo minhas dicas sobre o assunto para aprofundar um pouco mais. |
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
|
GNU Octave - Como calcular a derivada de uma função usando a função diff() do GNU Octave - Regra do Tombo (ou Regra da Potência) Java - Como usar a classe Character da linguagem Java para tratar caracteres individuais em seus programas |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





