RMI-Comment le passage d'un objet à distance grâce à une télécommande méthode de travail?

Si je comprends bien, une fois que j'ai mis en place un RMI lien de communication entre les deux systèmes, je peux passer un objet qui implémente "à Distance" dans l'une des méthodes à distance que prend un objet de ce type et le bien-end sera tout simplement obtenir de l'interface à distance pour le nouvel objet (en d'autres termes, il va devenir une nouvelle connexion à distance, contrairement à la sérialisation de l'objet.)

Est-ce correct?

Si oui, je suppose que cela a quelque chose à voir avec les signatures de méthode, mais j'aimerais savoir exactement comment il détermine qu'il doit créer un nouvel objet à distance au lieu de simplement la sérialisation de l'objet entier.

C'est vraiment difficile à mettre en mots. Laissez-moi essayer ceci:

Disons que j'ai un client et un serveur. Sur le serveur j'ai créer et publier un RMI objet, sur le système Client-je récupérer l'interface et peut interagir avec le système de Serveur.

Client                            Server
Object1 RemoteIface     ----   Object1 Implementation

So far So good. Sur Le Client, L'Objet1.remoteMethod() exécute sur le Serveur (après la sérialisation sur les paramètres).

Maintenant, voici la question, sur le client j'exécute le code comme ceci:

Object2 object2=new object2(); //Also a remote object
object1.send(object2); 

Ce que je comprends, à ce moment, mon système aura un nouveau mécanisme de communication:

Client                           Server
Object1 RemoteIface    -----    Object1 Implementation
Object2 Implementation -----    Object2 RemoteIface    

À ce stade, si le serveur appelle une méthode sur Objet2, cette méthode sera effectivement exécuté sur le client.

Je me demande à quel point le système décide de le faire plutôt que de simplement la sérialisation (comme il le ferait avec n'importe quel non-objet distant).

Ou suis-je complètement faux et il sérialise et j'ai besoin d'une sorte de "getRemoteInterface()" appel de la méthode pour créer de l'appel distant?

OriginalL'auteur Bill K | 2009-04-21