2010-02-03 3 views
0

Je souhaite créer un serveur rmi pouvant également servir de client, bien que cet aspect fonctionne correctement - un problème rencontré est que pour une relation serveur/client particulière, changer une variable locale sur l'instance agissant (pour le moment) en tant que serveur (et donc la méthode déclenchée à distance) ne persiste pas.méthode java appelée à distance - comment accéder à une variable locale

La prochaine fois que j'essayerai d'accéder à cette variable ou de la retourner, la variable d'origine non modifiée apparaîtra.

En C++ (si vous aviez rmi :) j'aurais pu passer un pointeur - mais comment puis-je forcer java à changer la valeur sous-jacente?

Répondre

0

Comment transmettez-vous l'objet distant? Il existe deux mécanismes, les stubs distants et la sérialisation. Puisque vous parlez d'accéder aux champs, je suppose que vous utilisez la sérialisation (les stubs distants sont juste des interfaces, seulement des méthodes, pas de champs).

Les objets sérialisés sont transférés en tant que copie. Ce ne sont que des objets de valeur qui ne seront pas affectés par tout ce qui arrive à "leur" version sur le serveur plus tard. Si vous avez besoin d'un objet qui continue à "vivre" sur le serveur, vous devez utiliser un objet Remote. Dans ce cas, seul un stub est créé sur le client et tous les appels de méthode vont au serveur.

+0

bien j'ai suivi la disposition générale ici: http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html seulement modded de sorte que le serveur peut être à la fois client et serveur - si je comprends bien, puisque iam enregistre l'objet avec le regstry, et appelle stub.foo() cela devrait fonctionner sur le serveur? – malangi

+0

a-t-il fonctionné avant le mod de serveur/client? – Thilo

Questions connexes