Dúvida - Estruturação de Projeto com RMI

1 resposta
G

Boa noite GUJZeiros, tudo beleza?

Bem, eu fiz um chat via socket cliente - servidor e agora tenho que mudar a comunicação para RMI.

Estaria tudo bem, porém há o fato de que a partir do meu cliente eu instancio um jogo online de Batalha Naval. Este jogo tem alguns movimentos que precisam ser propagados na rede, tais como: perdi, acertei?, enviarJogada. E no momento estou tratando assim:

BatalhaNaval -> Cliente, ou seja, tenho uma conexão RMI que liga meu aplicativo Batalha Naval com o meu Cliente..

Até aí "tudo bem.."

TUDO BEM NADA, Deu um nó GIGANTESCO no meu cérebro trabalhar com o RMI!! Tudo porque são projetos diferentes e, pelo que eu entendi ao usar RMI, precisamos criar uma interface remota, por exemplo:

public interface Comunicacao extends Remote{
    
    public boolean solicitaOponenteParaJogo(String jogo, String jogador1, String oponente) throws RemoteException;
    
    public String solicitaConexaoCliente(String ip, String nick) throws RemoteException;
    
    public void enviaMsgChat(String msg) throws RemoteException;

    public void desconectar(String idCliente) throws RemoteException;
    
    public boolean jogadaRealizada(String idJogador,String x, String y) throws RemoteException;
}

E Precisamos implementá-lo (que será o meu objeto remoto acessado pelo cliente), assim:

public class ServidorChat implements Comunicacao{
...

E no lado do cliente eu farei a Instanciação (através de um lookup no rmiregistry) da interface Comunicação para poder usar seus métodos, certo? Isso implica dizer que terei que COPIAR o Comunicacao.java e colar no projeto do meu Cliente, certo? (estou perguntando "certo?" pois é assim que eu ACHO que seja).

Até aí OK, eu entendi. Agora começa a complicar porque o meu Cliente tem métodos próprios que são propagados pelo servidor, como: mensagemRecebida, ataqueRecebido, etc.

Então aí implica dizer que eu terei que criar uma Interface Remota lá no meu cliente, implementá-la, copiar o ClienteRemote.java e colar no projeto do meu Servidor, correto?

...Até aí.. já tá complicando.. mas tudo FODE DE VEZ é quando entra o meu aplicativo BatalhaNaval.. Pois eles também vão trocar mensagens entre si, como: enviaJogada (batalha naval -> Cliente), ataqueRecebido(Cliente -> BatalhaNaval)..

POR FAVOR, ME DÊEM UMA LUZ!! Com certeza estou cometendo um erro GRAVE na estruturação do meu projeto e toda vídeo aula ou etc que poderia me auxiliar sempre mostram classes num mesmo projeto que compartilham um classpath e conhecem a Interface remota em questão a ser instanciada..

Obrigado!!

1 Resposta

G

Alguém? )):!!

Criado 19 de março de 2013
Ultima resposta 19 de mar. de 2013
Respostas 1
Participantes 1