2009-12-14 7 views
0

J'utilise this plugin (c'est plutôt cool).Le registre RMI est vide après le redémarrage

Inutile de dire que je suis un débutant RMI. J'ai suivi the tutorials et a été en mesure de mettre en place un exemple d'application.

Je ne comprends pas pourquoi à chaque fois que j'arrête et redémarre mon registre RMI local, les objets distants qui y étaient liés disparaissent. Est-ce un comportement normal? J'avais l'impression que le registre rmi pourrait être utilisé comme un outil de persistance - ainsi le contenu du registre ne devrait pas disparaître lorsque le registre est arrêté et redémarré.

Je suis probablement manquer quelque chose de très évident mais, encore une fois, je suis nouveau à rmi.

N'importe quel pointeur apprécié!

+1

Je trouve la documentation/le tutoriel RMI un peu déroutant et je ne vais pas essayer de l'expliquer par mes connaissances insuffisantes. Vous pouvez bénéficier de la lecture des tutoriels Sun "officiels" sur RMI de base: et à l'activation:

Répondre

1

Par défaut, le registre RMI ne conserve pas les informations sur les objets enregistrés avec lui. Par conséquent, vous devez enregistrer vos objets distants chaque fois que le serveur démarre. Par curiosité, qu'est-ce qui vous a fait croire que le registre "se souviendrait" en quelque sorte des objets qui y étaient enregistrés en dernier?

+0

OK - c'est ce qui me manque. Ce qui m'a amené à croire que pendant une séance de formation, ils montraient un exemple d'application ATM (sans db) et la conséquence logique de cela est que les choses sont conservées dans le registre (sinon chaque fois que vous redémarrez le serveur le compte bancaire deviendrait vide!). J'imagine que si j'utilise l'activation à distance, cela ne fera pas de différence? Une chose que je lis (http://www.universalteacherpublications.com/java/rmi/ch13/ch13_page01.htm) est qu'avec l'activation à distance, les objets distants dans le registre survivent aux plantages du serveur. – JohnIdol

+1

Je pense que je peux le * clear * up, au moins: Le Registre RMI fournit des informations sur la façon d'accéder à ses applications enregistrées, mais si ces applications traitent des données, ils doivent fournir leur propre persistance, généralement dans une base de données. –

1

pas besoin d'un registre autonome. Vous pouvez créer un registre directement dans le serveur VM:

Registry reg = LocateRegistry.createRegistry(1099); 
    reg.bind("service", myService); 
+0

objets liés à elle ne survivrait pas non plus redémarrer, je semble comprendre? – JohnIdol

+1

quel est le bien du registre, si l'objet serveur est parti avec le serveur VM? mettez-les tous dans un seul VM, afin qu'ils vivent ensemble et meurent ensemble. – irreputable

Questions connexes