Sockets e rmi

9 respostas
jmgneves

Boas!!! alguem me pode responder a esta pergunta muito simples?: è possível uma aplicação baseada apenas em sockets poder interagir com uma outra
baseada no interface Java RMI? Precisava mesmo de uma resposta :? obrigado!!!

9 Respostas

Andre_Fonseca

jmgneves:
Boas!!! alguem me pode responder a esta pergunta muito simples?: è possível uma aplicação baseada apenas em sockets poder interagir com uma outra
baseada no interface Java RMI? Precisava mesmo de uma resposta :? obrigado!!!

oi,

Sockets é um IP+Porta, um servidor fica escutando conexões e um ou muitos clientes se conectam enviando e recebendo mensagens para o servidor
RMI é um protocolo utilizado para chamada de métodos remotos

As duas coisas podem ser usadas juntas sem problemas, explique melhor qual o seu problema, qual o contexto da sua aplicação :slight_smile:

jmgneves

Caro André Fonseca, estou a pensar fazer um género de um chat P2P. A minha duvida era se um sistema desenvolvido pelo meio de sockets poderá comunicar com outro sistema que use RMI. mas creio que já me deu o sim à minha questão, de qualquer forma se me pudesse indicar algum tipo de literatura para me puder informar como utilizar as duas abordagens de sistemas distribuídos. Muito obrigado Pela ajuda. grande abraço!

bombbr

Se quer algo mais genérico utilize Sockets apenas… crie seu próprio protocolo…
Desta forma vc poderá criar aplicações (em qualquer linguagem) que se comuniquem com a sua aplicação.

Porque misturar com RMI?

JxtaNode

Bom dia,

Sim, pode utilisar Sockets para interagir com uma  interface Java RMI.

As mensagens são enviadas numa Socket. Do lado do servidor, precisamos de um Server Socket. Em seguida as mensagens enviadas, são convertidos em chamadas de métodos Java RMI. Esta combinação de tecnologias deve ser justificado para ser usado.

Para criar um chat P2P, Java na Internet :    
   - [b]Comunicação [/b]deve ser capaz de [b]atravessar firewalls, NAT, proxy[/b]... (RMI é usado nos LAN)
   - Sistema de [b]detecção de presença[/b]
   - [b]Descoberta[/b] de nós (Nodes , Peers)
   - Gerenciando [b]grupos[/b]
   -  middlewares JXTA, JGroups, ... XMPP

Abraços

M

JxtaNode:
Bom dia,

Sim, pode utilisar Sockets para interagir com uma  interface Java RMI.

As mensagens são enviadas numa Socket. Do lado do servidor, precisamos de um Server Socket. Em seguida as mensagens enviadas, são convertidos em chamadas de métodos Java RMI. Esta combinação de tecnologias deve ser justificado para ser usado.

Para criar um chat P2P, Java na Internet :    
   - [b]Comunicação [/b]deve ser capaz de [b]atravessar firewalls, NAT, proxy[/b]... (RMI é usado nos LAN)
   - Sistema de [b]detecção de presença[/b]
   - [b]Descoberta[/b] de nós (Nodes , Peers)
   - Gerenciando [b]grupos[/b]
   -  middlewares JXTA, JGroups, ... XMPP

Abraços


Concordo com o que você disse: RMI não é a melhor aplicação para um chat. Socket resolve.

Mas você disse que RMI é usado em LAN. Onde viu isso?

JxtaNode

Bom dia,

marcobiscaro2112 : { … você disse que RMI é usado em LAN. Onde viu isso? … }

Tente Java RMI em uma Wide Area Network (WAN) e me diga se ele funciona (em toda parte ) ?

Local Area Network (LAN) : Firewall … HTTP Tuneling …

// --------------------------------------------------------------
HTTP Tunnel software consists of client-server HTTP Tunneling applications that integrate with existing application software, permitting them to be used in conditions of restricted network connectivity including firewalled networks, networks behind proxy servers, and NATs.
//-------------------------------------------------------------

http://java.sun.com/developer/onlineTraining/rmi/RMI.html

O problema é o mesmo para JINI, JXTA, over Wide Area Network (WAN) …

Abraços

M

JxtaNode:
Bom dia,

marcobiscaro2112 : { … você disse que RMI é usado em LAN. Onde viu isso? … }

Tente Java RMI em uma Wide Area Network (WAN) e me diga se ele funciona (em toda parte ) ?

Local Area Network (LAN) : Firewall … HTTP Tuneling …

// --------------------------------------------------------------
HTTP Tunnel software consists of client-server HTTP Tunneling applications that integrate with existing application software, permitting them to be used in conditions of restricted network connectivity including firewalled networks, networks behind proxy servers, and NATs.
//-------------------------------------------------------------

http://java.sun.com/developer/onlineTraining/rmi/RMI.html

O problema é o mesmo para JINI, JXTA, over Wide Area Network (WAN) …

Abraços


Realmente não é toda parte que funciona. Mas isso não quer dizer que seja usado somente em LANs.

Porém acho que você interpretou mal o que está escrito nesse link. Você citou Firewall e HTTP Tuneling. Os “vilões” são os firewalls. HTTP tuneling é uma possível solução a eles - como o Firewall bloqueia conexões, o HTTP tunneling permite a passagem de determinados pacotes a partir de um encapsulamento em HTTP (o que prejudica a performance, claro). Assim como é dito no texto:

JxtaNode

Bom dia marcobiscaro2112,

marcobiscaro2112 : { Realmente não é toda parte que funciona. Mas isso não quer dizer que seja usado somente em LANs. }

Você pode me dar um exemplo de aplicativo(efectivamente utilizado) baseado em RMI que funciona em um Wide Area Network (WAN) ou Metropolitan Area Network (MAN), fora du Local Area Network (LAN) e Desk Area Network (DAN) ???

Eu estou muito interessado porque faz mais de 14 anos que eu trabalho com Java e eu não sei. Ainda assim, programado com RMI, JINI, JavaSpaces e um pouco com GigaSpaces para esta empresa em França http://www.fastconnect.fr/

[i]marcobiscaro2112 : {  Porém acho que você interpretou mal o que está escrito nesse link. Você citou Firewall e HTTP Tuneling.  }[/i]

Eu entendi muito bem o que está escrito em Inglês. Na prática Tuneling HTTP não é uma boa solução.
Mas se você souber de um exemplo prático a onda é usado, então gostaria de saber ?

Estou desenvolvendo uma aplicação distribuída e estou muito interessado em seus comentários e sugestões até mesmo críticas. Sobre as melhores soluções de comunicação para desenvolver uma aplicação sobre a rede Internet, com toda sua heterogeneidade, e as barreiras (firewalls, proxies, NAT …) Endereço IP variáveis, diferentes plataformas OS.

Qual é o melhor sobre Internet : Socket, RMI, RMI-IIOP, JINI, HTTP, REST, SOAP, XML-RPC, JXTA, JGroups, Terracotta, Jabber/XMPP, chimera, … ???

Abraços

M

Não posso citar nenhum exemplo, pois sinceramente não conheço nenhum efetivo (no sentido de uso corporativo).

Eu arriscaria dizer que uma possível solução seria VPN: é seguro, é rápido e é transparente (para aplicação, você está em uma LAN).

Criado 4 de janeiro de 2010
Ultima resposta 6 de jan. de 2010
Respostas 9
Participantes 5