Você está na página 1de 17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

EJB Tutorial

Searchthesite

Pesquisar

Incio Java RMI via Chat Grupo Exemplo usando Java RMI com
uma interface grfica do usurio

Chat de Grupo Exemplo usando Java


RMI com uma interface grfica do
usurio
Postado por Imed Bouchrika em 12 novembro de 2014 em Java RMI
No Comments

O objetivo deste tutorial para motiv-lo para a

Posts
relacionados

criao de um projeto muito simples usando Java RMI


que mostra um exemplo bsico de um sistema
distribudo.
Voc pode precisar fazer o download do Eclipse e Java

Como

JDK e lev-los instalados em sua mquina,

transferir

independentemente do sistema operacional (Windows

ou copiar

ou Linux).

um arquivo

Existem 4 partes neste tutorial, 1) Lado Servidor Side +


2) Cliente. 3) Embalagem 4) executando o aplicativo. As
estruturas dos projectos so apresentados a seguir:

entre
computadores
usando
java RMI

Idias do
projeto
para Java
RMI:
Aplicaes
Distribudas

Java RMI
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

1/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Exemplo:
Bate-papo
Grupo de
Implementao

Java RMI
Exemplo:
Programa
simples
bate-papo
entre
servidor e
cliente

1) Server Side

Abra o Eclipse e crie um novo projeto Java via:

Arquivo -> Novo -> Projeto Java


2

Definir o nome do projeto como: ChatServer

Erros
comuns
para
execuo
do RMI Ol,
mundo!

Um tutorial
passo a
passo para
implementao
Java RMI
Chilrear
0

Fix-lo

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

2/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Criar uma nova interface no mbito deste projecto

denominado: ChatServerInt via. Clique com o boto


direito no mbito do projecto ChatServer-> Novo->
Interface

Digite o cdigo a seguir a interface: ChatServerInt

1.
2.
3.
4.
5.
6.
7.
8.

importjava.rmi.*;
importjava.util.*;

pblicointerfacedeChatServerIntestende

pblicobooleandelogin(ChatClientInt

pblicovaziopublicar(strings)lana

pblicoVectorgetConnected()lana
}

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

3/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

criar uma nova interface no mbito deste projecto

denominado: ChatClienInt via. Clique com o boto


direito no mbito do projecto ChatServer-> Novo->
Interface. Digite o seguinte cdigo para a interface:

1.
2.
3.
4.
5.
6.

importjava.rmi.*;

pblicointerfacedeChatClientIntestende

pblicovaziotell(stringnome)lana

pblicadeCordasgetName()lana
}

Crie uma nova classe chamada ChatServer no

mbito do projecto. Clique com o boto direito no


mbito do projecto ChatServer-> Novo-> Class

Digite o nome da classe como: ChatServer

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

4/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Digite o seguinte cdigo para a classe ChatServer

1. importjava.rmi.*;
2. importjava.rmi.servidor.UnicastRemoteObject;
3. importjava.util.*;
4.
5. pblicoclasseChatServerestendeUnicastRemoteObject
6.
7.
privadoVectorv=newVector();
8.
pblicoChatServer()lanaRemoteException
9.

10.
pblicobooleandelogin(ChatClientInt
11.

Sistema.Out.Println(um.GetName
12.

um.dizer("Vocconectoucom
13.

publicar(um.getName()+"temapenas
14.

v.adicione(um);
15.

retornarverdadeiro;
16.
}
17.
18.
pblicovaziopublicar(strings)lana
19.
Sistema.Out.Println(s);
20.

para(inti=0;i<v.size();
21.

tente{
22.

ChatClientInttmp=(ChatClientInt)
23.

tmp.dizer(s);
24.

}Prendedor(exceoe){
25.

//problemacomoclientenoligado.
26.

//Melhorpararemovlo
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

5/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

27.
28.
29.
30.
31.
32.
33.
34. }

}
}

pblicoVectorgetConnected()lana

retornarv;
}

Precisamos criar nova classe sob a ChatServer

projecto denominado como: StartServer. Digite o


seguinte cdigo para a classe StartServer

1. importjava.rmi.*;
2. importjava.rmi.servidor.*;
3.
4. pblicoclasseStartServer{
5.
pblicosestticosvaziosprincipais
6.

tente{
7.

//System.setSecurityManager(newRMISecurityManager());
8.

java.rmi.registro.
9.

10.

ChatServerInt
11.

Naming.Religar
12.

Sistema.Out.
13.

}Prendedor(exceo
14.

Sistema.
15.

}
16.
}
17. }

Altere o endereo IP 192.168.1.102 para o


seu endereo IP. Melhor no usar localhost

10 Executar o seu servidor, mas para a causa nica


de compilao atravs de clicar no boto verde jogo
mostrado abaixo:

11 Agora, voc precisa para abrir seu console cmd


DOS (ou terminal unix). Navegue at a sua rea de
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

6/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

trabalho BIN pasta para o projeto. A localizao do seu


projeto pode ser conhecido atravs de um clique:
Selecione o projeto ChatServer, Right Click ->
Propriedades

12 Copie o local mostrado na prxima janela para o


projeto:

13 Dentro da janela preta do CMD, digite a


localizao completa da pasta bin. Por exemplo :

cd C: \ Users \ Imed \ workspace \


ChatServer \ bin

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

7/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Certifique-se de digitar sua localizao,


no a minha. Certifique-se de que voc
est dentro da pasta BIN

14 Run the rmic to generate the stub for the remote


object ChatServer Run the following command:

rmic ChatServer -> Pressione Enter

Isso quase para o lado do servidor!

2) do lado do cliente
1

Crie um novo projeto Java via: Arquivo -> Novo ->

Java Project, defina seu nome como: ChatClientProj


2

Crie uma nova interface ChatClientInt no mbito

do projecto ChatClientProj com exatamente o mesmo


cdigo acima.
3

Criar uma nova interface ChatServerInt no mbito

do projecto ChatClientProj com exatamente o mesmo


cdigo acima.
4

Criar um novo Classe: ChatClient no mbito do

projecto ChatClientProj, copie e cole o seguinte cdigo


para esta classe:

1. importjava.rmi.*;
2. importjava.rmi.servidor.UnicastRemoteObject;
3.
4. pblicoclasseChatClientestendeUnicastRemoteObject
5.
6.
privadodeCordasnome;
7.
privadoChatUIui;
8.
pblicoChatClient(Cordasn)lana
9.

nomeie=n;
10.

}
11.
12.
pblicovaziotell(stringst)lana
13.

Sistema.Out.Println(st);
14.

ui.writeMsg(st);
15.
}
16.
pblicadeCordasgetName()lana
17.

retornarnome;
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

8/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

18.
19.
20.
21.
22.
23. }

}
pblicovaziosetGUI(ChatUIt){

ui=t;
}

criar uma nova classe: ChatUI no mbito do

projecto ChatClientProj, copie e cole o seguinte cdigo


para esta classe:

1. importaojavax.balano.*;
2. importaojavax.balano.fronteira.*;
3.
4. importjava.awt.*;
5. importjava.awt.evento.*;
6. importjava.rmi.Naming;
7. importjava.util.*;
8.
9. pblicoclasseChatUI{
10. privadoChatClientcliente;
11. privadoChatServerIntservidor;
12. pblicovaziodoConnect(){
13.
se(seconectar.getText().equals
14.

se(nome.getText.()comprimento
15.

se(ip.getText.()comprimento
16.

tente{
17.

client=new
18.

cliente.setGUI(este);
19.

servidor=(ChatServerInt)
20.

servidor.delogin
21.

updateUsers(servidor.
22.

conectar.setText
23.

}Prendedor(exceoe){e.PrintStackTrace
24.
}Mais{
25.

updateUsers(nulos);
26.

conectar.setText("Connect");
27.

//MelhorparaimplementarSair....
28.

}
29.
}
30.
31. pblicovazioSendText(){
32. se(seconectar.getText().equals("Connect"))
33.
JOptionPane.ShowMessageDialog(quadro,
34. }
35. Cordast=tf.GetText();
36. st="["+nome.getText()+"]"+r;
37. tf.setText("");
38. //Removesevocestiverindoparaimplementarparainvocaoremota
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

9/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

39. tente{
40.

servidor.publicar(st);
41.

}Prendedor(exceoe){e.PrintStackTrace
42. }
43.
44. pblicovaziowriteMsg(stringst){tx.
45.
46. pblicosvaziosupdateUsers(Vectorv){
47. DefaultListModelListModel=newDefaultListModel
48. se(v!=nulo)para(inti=0;i<v.
49.
tente{Cadeiatmp=((ChatClientInt)
50.

ListModel.addElement
51.
}Prendedor(exceoe){e.PrintStackTrace
52. }
53. lst.setModel(ListModel);
54. }
55.
56. pblicosestticosvaziosprincipais(decorda
57.
Sistema.Out.Println("Olmundo!");
58.
ChatUIc=novaChatUI();
59. }
60.
61. //Cdigodeinterfacedousurio.
62. pblicoChatUI(){
63.
Frame=newJFrame("GroupChat");
64.
JPanelprincipais=novasJPanel
65.
JPanelsuperior=novasJPanel();
66.
JPanelcn=novasJPanel();
67.
JPanelinferior=novasJPanel();
68.
ip=newJTextField();
69.
tf=newJTextField();
70.
nomeie=newJTextField();
71.
tx=newJTextArea();
72.
conectar=newJButton("Connect");
73.
JButtonbt=newJButton("Send");
74.
lst=newJList();
75.
principal.setLayout(novoBorderLayout
76.
topo.setLayout(novoGridLayout
77.
cn.setLayout(novoBorderLayout
78.
bottom.setLayout(novoBorderLayout
79.
topo.adicione(novoJLabel("Oseu
80.
topo.adicione(novoJLabel("Endereodo
81.
topo.adicionar(ligar);
82.
cn.adicione(novoJScrollPane(tx),
83.
cn.adicione(LST,BorderLayout.
84.
bottom.adicione(tf,BorderLayout.
85.
bottom.adicione(bt,BorderLayout.
86.
principal.adicione(topo,BorderLayout.
87.
principal.adicione(cn,BorderLayout.
88.
principal.adicione(parteinferior,
89.
principal.setBorder(novoEmptyBorder
90.
//Eventos
91.
conectar.addActionListener(novo
92.
pblicovazioactionPerformed
93.
bt.addActionListener(novoActionListener
94.
pblicovazioactionPerformed
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

10/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107. }

tf.addActionListener(novoActionListener
pblicovazioactionPerformed

quadro.setContentPane(principal);
quadro.setSize(600,600);
quadro.setVisible(verdadeiro);
}
JTextAreatx;
JTextFieldtf,ip,nome;
JButtonseconectar;
JListlst;
JFramequadro;

Execute o ChatUI para que tudo compilado. Voc

pode fech-lo
7

Gerar o stub para o ChatClient classe usando o

RMIC dentro da pasta bin da ChatClientProj

rmic ChatClient -> Pressione Enter

Isso para o cliente agora.

3) Embalagem das Aplicaes


1

Copie o arquivo stub para os

ChatServer_stub.class lado do servidor para o src


pasta do cliente como mostrado abaixo:

Copie o arquivo de stub para os

ChatClient_stub.class lado do cliente para o src pasta


do servidor, conforme mostrado abaixo:

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

11/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Boto direito do mouse sobre o projeto

ChatServer, selecione Atualizao:

Faa o mesmo para o ChatClientProj projeto,

clique com o boto direito e selecione Atualizar


5

Clique direito sobre o projeto ChatServer,

selecione Export

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

12/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Selecione Java -> arquivo Jar Runnable

na prxima tela, selecione ChatServer -

StartServer. Para a configurao de lanamento


Procurar um local para salvar o arquivo jar exportado
e clique em Concluir, voc pode nome-lo como
server.jar

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

13/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Faa o mesmo para o ChatClientProj e export-lo

como client.jar

4) A execuo do Servidor e
Cliente
1

O servidor pode ser executado a partir de Eclipse,

ou voc pode usar o server.jar arquivo para execut-lo


a partir de qualquer PC atravs do comando (console
CMD):

java -jar server.jar

D o arquivo client.jar a outras pessoas

conectadas rede. Porque o cliente um aplicativo


GUI, eles podem clicar duas vezes sobre ele seja
executado atravs do Java Virtual Machine (no
WinRar ....)
Ou em vez disso, para execut-lo atravs do console
CMD como:

java -jar client.jar

Aqui uma imagem do aplicativo.

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

14/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Voc pode fazer o download dos projetos e


arquivos jar a partir daqui

Sobre o autor
por Imed Bouchrika

Sistemas Distribudo
Java RMI
CORBA
J2EE
EJB Tutoriais
Servios web
http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

15/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

Quizes
Livros
Notas de curso
Pginas
Contate-nos
poltica de Privacidade

Etiquetas
13

Java

12

Programming

Distributed

Socket

J2EE

idl

XML

Communication

Books

TCP

Threaded

HTTP

xPath

3
3
2

rmi

CORBA
EJB

SOA

Servlet

1
1

Thread
Server

1
1

Searchthesite

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

rpc

TCPmon
JSP

Pesquisar

16/17

10/11/2015

ChatdeGrupoExemplousandoJavaRMIcomumainterfacegrficadousurio

2015 EJB Tutorial. Todos os direitos reservados.

Mantido por GoCorrect.com. Voltar ao incio

http://www.ejbtutorial.com/javarmi/groupchatexampleusingjavarmiwithagraphicaluserinterface

17/17