Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requet RMI adresse publique --> adresse privée.

4 réponses
Avatar
Valdo Tschantre
Ma dernière question sur les services RMI n'ayant pas eu beaucoup de
succès - elle ne devait pas être très claire -, je me permet de la
reposer sous une autre forme...

Peut-on :
1 - établir une connexion réseau entre un service et un client RMI,
2 - forcer le /skeleton RMI/, du service, d'écouter à une extrémité,
3 - forcer le /stub RMI/, du client, d'envoyer ses requêtes via l'autre
extrémité ?

Le but étant de permettre l'accès à un service RMI, tournant sur une
machine ayant une /adresse privée/, à un client, tournant sur une
machine ayant une /adresse publique/. Vous me direz que c'est le monde
à l'envers ! Mais si je veux permettre a un serveur d'application de
poser des questions à une applet, il me semble que cela pourrait être la
solution... Non ?


--
valdo.tschantre@ifrance-NOSPAM.com

4 réponses

Avatar
Hervé AGNOUX
Valdo Tschantre wrote:


Peut-on :
1 - établir une connexion réseau entre un service et un client RMI,


Si par "service" tu entends un "serveur rmi", oui, heureusement. (j'ai un
peu de mal à comprendre).


2 - forcer le /skeleton RMI/, du service, d'écouter à une extrémité,
3 - forcer le /stub RMI/, du client, d'envoyer ses requêtes via l'autre
extrémité ?



Il est maladroit de parler en terme de skeleton et de stub, et je ne
comprends pas pourquoi tu sembles y tenir ? Normalement, skeleton et stub
sont des objets que l'on n'utilise pas volontairement.


Le but étant de permettre l'accès à un service RMI, tournant sur une
machine ayant une /adresse privée/, à un client, tournant sur une
machine ayant une /adresse publique/. Vous me direz que c'est le monde
à l'envers ! Mais si je veux permettre a un serveur d'application de
poser des questions à une applet, il me semble que cela pourrait être la
solution... Non ?



Il y a plusieurs solutions pour cela. Moi je fais un client / serveur à
l'envers : le client fait une requête sur le serveur... qui ne répond que
lorsqu'il a quelque chose à dire ou à demander au client. La réponse
contient une demande au client, qui re-répond en se reconnectant au
serveur... Ce n'est pas très ortodoxe, mais ça marche en java 1.1.

L'ortodoxie pour se genre de problèmes est d'utiliser le RMI Callback, dont
tu pourras trouver un exemple à
http://djlweb.free.fr/java/faq/java-faq-12.html#ss12.4, ou, en anglais, "
An in-depth look at RMI callbacks"
'http://www.javaworld.com/javaworld/javaqa/1999-04/05-rmicallback.html).

Je l'ai jamais fait, parce que je me suis éloigné du RMI en même temps que
du java 1.1, mais je me suis dit que cela aurait été utile si j'avais
continué.

Cordialement.


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
Valdo Tschantre
Valdo Tschantre wrote:
2 - forcer le /skeleton RMI/, du service, d'écouter à une extrémité,
3 - forcer le /stub RMI/, du client, d'envoyer ses requêtes via l'autre
extrémité ?


Il est maladroit de parler en terme de skeleton et de stub, et je ne
comprends pas pourquoi tu sembles y tenir ? Normalement, skeleton et stub
sont des objets que l'on n'utilise pas volontairement.


Qu'ils soient cachés à l'utilisation est une chose, mais ils seront
malgré tout utilisés... Et dans mon cas, ce sont les informations
d'adressages réseaux portées par le /stub/ du client, utilisé par le
serveur, qui posent des problèmes.

En effet, le client étant dans un domaine d'adressage privé, le /stub/
de ce client utilisé par le serveur - qui est pour sa part dans un
domaine d'adressage public - transporte des informations réseaux
erronées au vue de ce serveur; le serveur ne sait pas atteindre le
client. Et Malheureusement pour moi, les RMI CallBack ne résolvent pas
ce problème.

Cependant, si le client initiait une connexion vers le serveur, alors le
serveur aurait à sa disposition un canal de communication vers le
client. Resterait alors à dérouter les requêtes du /stub/, coté
serveur, vers ce canal et à faire écouté ce canal au /skeleton/, côté
client.


Il y a plusieurs solutions pour cela. Moi je fais un client / serveur à
l'envers : le client fait une requête sur le serveur... qui ne répond que
lorsqu'il a quelque chose à dire ou à demander au client. La réponse
contient une demande au client, qui re-répond en se reconnectant au
serveur... Ce n'est pas très ortodoxe, mais ça marche en java 1.1.


Ton approche me semble être une bonne alternative au /tunneling/ que je
souhaiterais mettre en oeuvre...


Cordialement.


Merci Hervé.


Si d'autres personnes avaient des pistes... je suis toujours preneur ;)


--



Avatar
Noe
"Valdo Tschantre" a écrit dans le
message de news:417ccd85$0$7069$
Ma dernière question sur les services RMI n'ayant pas eu beaucoup de
succès - elle ne devait pas être très claire -, je me permet de la
reposer sous une autre forme...

Peut-on :
1 - établir une connexion réseau entre un service et un client RMI,
2 - forcer le /skeleton RMI/, du service, d'écouter à une extrémité,
3 - forcer le /stub RMI/, du client, d'envoyer ses requêtes via l'autre
extrémité ?

Le but étant de permettre l'accès à un service RMI, tournant sur une
machine ayant une /adresse privée/, à un client, tournant sur une
machine ayant une /adresse publique/. Vous me direz que c'est le monde
à l'envers ! Mais si je veux permettre a un serveur d'application de
poser des questions à une applet, il me semble que cela pourrait être la
solution... Non ?


--




Salut Valdo,

essaies plutôt d'utiliser du JMS (java messaging service), tu connectes ton
applet à une queue de message, ainsi lorsque le serveur a quelque chose à
dire à l'applet, il poste le message, et inversement. Ca marche très bien et
surtout ca permet de travailler en mode asynchrone, avec transaction et tout
et tout...

Regarde activemq, il est très bon.

bigoneosix at netscape.net

Avatar
Valdo Tschantre
essaies plutôt d'utiliser du JMS (java messaging service), tu connectes ton
applet à une queue de message, ainsi lorsque le serveur a quelque chose à
dire à l'applet, il poste le message, et inversement. Ca marche très bien et
surtout ca permet de travailler en mode asynchrone, avec transaction et tout
et tout...


Merci pour l'idée... Je vais voir ce que je peux en faire.


--
valdo DOT tschantre AT ifrance DOT com