2013-07-12 2 views
0

Lorsqu'un client demande une référence distante à un registre RMI, Rmiregistry envoie au client une instance de la classe stub, le client a également besoin de la définition de cette classe (.class).Théorie RMI, télécharger le fichier stub

Le client demande stub.class à Rmiregistry ou Rmiregistry l'envoie automatiquement?

Utilisation de la propriété codebase Puis-je forcer le client à télécharger stub.class à partir d'un serveur Web?

Merci

** EDIT: Il semble que si je produis fichier stub avec CRIM, puis client essaie de les télécharger, si je ne pas utiliser le client rmic ne télécharge pas stub, mais mes travaux de programme .

Pouvez-vous expliquer cela?

** FINAL EDIT: Ok, je pense avoir compris. Merci à EJP

Cordialement

+0

utilisez codebase, partagez le codebase avec un simple serveur http, enregistrez le codebase dans le client et le serveur. –

+0

@ user2511414 Il est seulement nécessaire de * définir * (et non 'enregistrer') la propriété codebase * de la JVM qui envoie des objets dont les classes n'ont pas l'homologue dans son CLASSPATH. Normalement, c'est seulement le serveur. – EJP

+0

@EJP merci mon pote, mais je place toujours le répertoire de base de code sur le serveur aussi, donc vous voulez dire qu'il y a de toute façon juste pour définir le code de base pour le client? –

Répondre

1

client demande à stub.class rmiregistry ou rmiregistry envoie automatiquement?

Aucune. Soit le client a déjà la classe dans son CLASSPATH, soit il le télécharge depuis le serveur de base de code s'il y en a un. Le registre n'a rien à voir avec cela. Utilisation de la propriété codebase Puis-je forcer le client à télécharger stub.class à partir d'un serveur Web?

Eh bien, c'est ce que c'est pour. C'est le seulement c'est pour ça. Notez qu'il doit être défini sur la machine JVM du serveur RMI.

Il semble que si je produis fichier stub avec CRIM, puis client essaie de les télécharger, si je ne pas utiliser le client rmic ne télécharge pas stub, mais mon programme fonctionne. Si vous remplissez les conditions décrites dans la description de la classe dans Javadoc pour UnicastRemoteObject, vous n'avez pas besoin de générer de stubs du tout.

+0

Si le serveur de base de code n'est pas défini et que le client n'a pas stub.class dans son CLASSPATH, que se passera-t-il? – Edge7

+0

Une exception ClassNotFoundException, bien sûr. – EJP

+0

Salut EJP, Laissez-moi vous dire une bonne chose! J'utilise une version java mise à jour, mais juste pour apprendre que j'ai créé le fichier stub manuellement via RMI, à ce stade, le client essaie de télécharger le fichier stub, mais si je n'utilise pas Rmic, il semble qu'il y ait un façon de créer automatiquement Stub. Pouvez-vous expliquer? – Edge7