Você está na página 1de 3

RMICOMPACTOR, SOFTWARE DE

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.

Esse software tem como finalidade proporcionar ao


usurio a compactao e descompactao de arquivos .ZIP.
O sistema funcionar da seguinte forma: implementado
um servidor que por sua vez, ter um servio( ou mtodo)
disponvel , nesse caso, o servio que executar a funo de
compactar um dado arquivo, ou descompactar arquivos
ZIP. De outro lado teremos o cliente que requisitar atravs
de uma pesquisa ( lookup ), o servio, assim permitindo
fazer a invocao de mtodo remota. O servidor receber
a requisio, a processar e mandar o arquivo, cujo foi
recebido, e posteriormente, o enviar ao seu usurio.
Como pode ser constatado, o usurio far uso do servio na
aplicao, mas esse pensar que tudo est sendo executado
localmente, ou seja, haver uma transparncia quanto ao
funcionamento do software.

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: .

O servidor do Rmicompactor funciona da seguinte


forma:
executado o main do servidor da aplicao;
o main o construtor da classe que executa o
rmiregistry, construindo as implementaes
do servidor e registrando os mtodos remotos;
aps isso o servidor estar em funcionamento.
Dessa forma, o servio est pronto para ser
solicitado e fica rodando infinitamente at que seja
feito o seu encerramento. figura 1B, pode ser vista a
classe do servidor.
J o cliente funcionar da seguinte forma:
executado o main do cliente;
construindo as implementaes do cliente.
Com as implementaes
criadas, o processo disponibiliza os seus
servios registrando os
seus mtodos remotos no servidor de nomes
do RMI.
Aps isso, o processo busca no
servio de nomes os servios disponibilizados
pelo servidor e cria uma referncia de
acesso a tais servios.
O cliente est pronto para fazer a devidas requisies
ao servidor.
B. Vantagens e Desvantagens das implementaes em
RMI
Como em toda aplicao podem possuir fatores positivos e
negativos, as implementaes na arquitetura RMI no
poderiam ser diferentes. As vantagens do uso so as
seguintes:

Modelagem fcil e natural de sistemas


distribudos;
sintaxe da chamada de mtodo local = sintaxe
da chamada de mtodo remoto;
rpida difuso com a plataforma Java [2].
Ou seja, pela tica do desenvolvimento, o cdigo
gerado de fcil entendimento, alm de ser
implementado em uma linguagem que atualmente
bem difundida, no possuindo diferena entre mtodos
quanto ao mesmo est sendo chamado localmente ou
no.
Tendo nfase agora nas desvantagens, por se tratar
de uma arquitetura que necessita da JVM em suas
aplicaes em ambos os ambientes, ou seja, tanto
cliente como servidor, isso o torna preso a essa
plataforma. Outras desvantagens seriam:

objeto remoto e servidor de nomes (Registry)


devem estar na mesma mquina;

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 class Cliente {

private static String port = "1099";


static Mensagem mensagem = null;

{...}
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";

public class ServidorRMI {

public static void main(String arg[] ){


int port = 1099;
try {
LocateRegistry.createRegistry( port );
} catch ( Exception e1 ) {

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.

Você também pode gostar