Escolar Documentos
Profissional Documentos
Cultura Documentos
COMPACTAO E DESCOMPACTAO,
UTILIZANDO REMOTE METHOD
INVOCATION(RMI)
ARAUJO, W. G. F. 1, PEREIRA, E. D. de L.e Terceiro Autor3
Introduo
No atual mercado de desenvolvimento de software,
onde a necessidade de se distribuir o processamento de
dados vem apresentando um crescimento vertiginoso, o
RPC (Remote Procedure Call), ou Chamada de
Procedimento Remoto, apresenta-se como uma
alternativa para atender a este panorama. Esse
permite que um programa procedural (isto , um
programa escrito em C ou outra linguagem de
programao procedural) chame uma funo que
reside em outro computador to convenientemente
como se essa funo fosse parte do mesmo programa
que executa no mesmo computador [1]. Dessa forma,
o RPC procura tornar transparente ao programador que
partes de sua aplicao esto distribudas e que se
comunicam por meio de uma rede.
O RPC possui diferentes formas de implementao,
as quais podem ser: CORBA padro RPC
independente de plataforma; Sun RPC para as
plataformas Unix e Linux; DCOM para Windows;
SOAP para Web Service; e RMI padro RPC para
Java [1].
A abordagem utilizada neste artigo trata do RMI
(Remote Method Invocation) Invocao de Mtodos
Remotos. Como j foi ressaltado, o RMI uma
interface de programao, em que disponibiliza
chamadas remotas no estilo RPC na plataforma JAVA.
Atravs do uso do RMI, possvel que um objeto de
uma mquina faa requisies/interaja com outros
objetos em outras mquinas, onde a Mquina Virtual
Java (JVM) esteja em funcionamento. Dessa forma,
podemos dividir o processamento, que uma vez poderia
ser executado em apenas uma mquina, para ser
processado em vrias outras, otimizando em tempo de
execuo e resposta.
Partindo-se dessa premissa, em que a nossa
aplicao pode ganhar muito em processamento, tempo
de resposta, alm de simular, ou melhor, transparecer
ao usurio que tudo pareceria estar em funcionamento
localmente, que foi desenvolvido o Rmicompactor.
Material e mtodos
A. Estrutura do RMI
Para o desenvolvimento de um aplicativo em RMI
devemos seguir os seguintes passos :
1. Definir uma interface remota que descreve como
o cliente e o servidor se comunica um com o
outro;
2. Definir o aplicativo servidor que implementa a
interface remota. (Nota: por conveno, a classe
de implementao de servidor tem o mesmo nome
que a interface remota e termina com Impl.);
3. Definir o aplicativo cliente que utiliza uma
referncia de interface remota para interagir com
a implementao de servidor da interface (isto ,
um objeto da classe que implementa a interface
remota).;
4. Compilar e executar o servidor e o cliente [1].
Na figura 1A pode-se ver um esquema de como
estariam inter-relacionadas o cliente, servidor e interface.
No caso da aplicao que ser descrita nesse artigo foi
implementada da mesma forma descrita acima, porm foi
engajada uma classe que tem por finalidade a compactao
e descompactao dos arquivos.
________________
1. Willamys G. F. Arajo aluno do curso de Bacharelado em Sistemas de Informao da Unidade Acadmica de Serra Talhada, Universidade
Federal Rural de Pernambuco. Fazenda do Saco, Serra Talhada, PE, Caixa Postal 063, CEP 56900-000. E-mail: willamysaraujo7@gmail.com
2.derson Danillo de L. Pereira aluno do curso de Bacharelado em Sistemas de Informao da Unidade Acadmica de Serra Talhada,
Universidade Federal Rural de Pernambuco. Fazenda do Saco, Serra Talhada, PE, Caixa Postal 063, CEP 56900-000. E-mail:
edersondanillo@gmail.com
3. Professor Assistente da Unidade Acadmica de Serra Talhada, Universidade Federal Rural de Pernambuco. Fazenda do Saco, Serra Talhada,
PE, Caixa Postal 063, CEP 56900-000. E-mail: .
comunicao sncrona;
limitao para usurios de browser proxy server:
HTTP tunelling x criptografia;
configuraes adicionais no firewall e restries
de acesso e desempenho [2].
O RMI mesmo com suas vantagens e desvantagens
uma das formas mais fcies de se implementar um sistema
distribudo, tendo em vista a plataforma e linguagem
utilizadas.
Resultados e Discusses
Neste artigo foram demonstrados como se podem
desenvolver aplicaes distribudas, utilizando RMI.
Abordando as etapas a serem seguidas, a fim de obter um
software de acordo com a demanda dos usurios. Foi usado
como exemplo o Rmicompactor, um software desenvolvido
no intuito de fazer a compactao e descompactao de
arquivos.
De modo geral, as compactaes e descompactaes
puderam ser bem executadas de forma rpida, chegando a
ligeira impresso de que o seu processamento estivesse
sendo todo executado em uma nica mquina.
Pode-se constatar tambm, a eficincia da arquitetura
RMI na plataforma de desenvolvimento Java,
proporcionando uma programao se forma simples e
direta, e com grande portabilidade, tendo em vista os
pressupostos de que a JVM (mquina Virtual), estivesse
presente.
Agradecimentos
Agradecemos a UFRPE por proporcionar o curso de
Sistemas de Informao na Unidade Acadmica de Serra
Talhada, no qual podemos usufruir das tcnicas e modelos
que a disciplina de Sistemas Distribudos pode nos
proporcionar.
Referncias
[1] DEITEL, H. M. e DEITEL, P. J. - Java: Como Programar. 3
edio. Bookman, 2002, Cap.20, p.890-908.
[2] GOULART, F. S. - Java RMI - Remote Method Invocation
Homepage:htttp://www.ucb.br/prg/professores/fgoulart/gsi_rmi.pdf.
[3] RODRIGUES, E. de M. , GUINDANI, G. M. e AMARAL , L. A.
DELAMARE, F. - Exemplos prticos do uso de RMI em sistemas
distribudos Homepage:
http://www.inf.pucrs.br/~gustavo/disciplinas/sd/material/Artigo_RMI_Pra
tico.pdf
{...}
public static void main(String[] args)
{
Cliente cli = new Cliente();
String ipConfig
="rmi://"+JOptionPane.showInputDialog("D
igite o ip do servidor")+ ":" + port +
"/";
try {
mensagem = (Mensagem)
Naming.lookup(ipConfig +
"CompactorServer");
String arquivo2 =
"C:\\DocsClienteTemp\\Descompactados";
String arquivo3 =
"C:\\DocsClienteTemp\\Compactados";
System.out.println(e1.getMessage();
}
try {
String name = "CompactorServer";
ServidorImpl m = new
ServidorImpl();
java.rmi.registry.Registry
registry =
LocateRegistry.getRegistry(port);
registry.rebind(name, m);
String arquivo =
"C:\\DocsServidor\\Para_Serem_Compactado
s";
File file = new File(arquivo);
file.mkdirs();
System.out.println( " Servidor RMI
Rodando... ");
} catch (Exception e) {
System.err.println("exceo RMI:"
+ e.getMessage());
}
}
}
cli.getJFrame1();
cli.getJTextFieldDestino().setText(arqui
vo2);
File file = new File(arquivo2);
File file2 = new File(arquivo3);
file.mkdirs();
file2.mkdirs();
} catch (ConnectException e) {
System.out.println("ERRO: Servidor
Desconectado" + e.getMessage() );
} catch (Exception e) {
System.out.println("Erro Interno"
+e.getMessage());
}
}
{...}
}
Figura 1. Na fig. 1 temos o esquema da inter-relao entre o cliente, servidor e interface remota no RMI. Na fig. 1B temo a implementao do
ServidorRMI. Na Fig.1C temos a implementao do cliente no RMI.