RMI serveur: rmiregistry ou LocateRegistry.createRegistry
Pour RMI sur le côté serveur, n'avons-nous besoin pour commencer à rmiregistry
programme, ou tout simplement appeler LocateRegistry.createRegistry
?
Si les deux sont possibles, quels sont les avantages et les inconvénients?
OriginalL'auteur Randy Sugianto 'Yuku' | 2008-09-19
Vous devez vous connecter pour publier un commentaire.
Ils sont de la même chose...
rmiregistry
est un programme distinct que vous pouvez exécuter à partir d'une ligne de commande ou dans un script, tandis queLocateRegistry.createRegistry
fait la même chose en programmant.Dans mon expérience, pour les "vrais" serveurs que vous souhaitez utiliser
rmiregistry
de sorte que vous savez qu'il est toujours en cours d'exécution, indépendamment de si oui ou non l'application client est démarré.createRegistry
est très utile pour les tests, comme vous pouvez démarrer et arrêter le registre de votre test comme nécessaire.Mise à jour: La documentation dit "createRegistry" les exportations d'un registre sur Localhost. Toutefois, le Registre est en mesure d'accepter les connexions depuis l'extérieur face à des interfaces.
Les exportations de Registre en cours d'exécution dans le localhost. Il n'y a pas d'implication que c'est seulement à l'écoute de 127.0.0.1.
OriginalL'auteur user17250
Si nous commençons à rmiregistry d'abord, RmiServiceExporter devraient s'inscrire lui-même à l'exécution de rmiregistry. Dans ce cas, nous devons définir la propriété système java.rmi.serveur.codebase "d'où le" org.springframework.l'accès distant.rmi.RmiInvocationWrapper_Stub " classe peut être trouvé. Sinon, le RmiServiceExporter ne serait pas commencé et a obtenu l'exception"
ClassNotFoundException classe non trouvé: org.springframework.l'accès distant.rmi.RmiInvocationWrapper_Stub; nested exception est la suivante: ..."
Si votre serveur rmi, rmi client et rmiregistry pouvez accéder à un même système de fichiers, vous souhaitez peut-être le système de la propriété d'être configurés automatiquement à l'endroit où la spring.jar peut être trouvé sur le système de fichiers partagé. L'utilitaire suivant les classes et les printemps de configuration de montrer comment cela peut être réalisé.
L'exemple ci-dessus montre comment le système de propriété doit être définie automatiquement uniquement lorsque le serveur rmi, rmi client et rmi registre peut accéder à un même système de fichiers. Si ce n'est pas vrai de printemps ou de la base de code est partagé par les autres méthodes (par exemple HTTP), vous pouvez modifier le CodeBaseResolver pour s'adapter à votre besoin.
OriginalL'auteur William Wong
Si vous écrivez une application java autonome, vous voulez démarrer votre propre rmiregistry mais si vous écrivez une application J2EE qui va bien évidemment à l'intérieur d'un conteneur J2EE alors vous voulez "LocateRegistry" comme il existe déjà un en cours d'exécution sur le serveur d'applications!
OriginalL'auteur Autobyte
Si vous utilisez du Printemps à l'exportation de votre RMI services, il commence automatiquement à un registre si l'on n'est pas déjà en cours d'exécution. Voir RmiServiceExporter
OriginalL'auteur Kevin Wong