Comment puis-je m'assurer que le RMI utilise uniquement un ensemble de ports?

Dans notre application, nous utilisons RMI de communication client-serveur de façons très différentes:

  1. Poussant des données du serveur vers le client à être affichée.
  2. L'envoi d'informations de contrôle du client vers le serveur.
  3. Des rappels à partir de ces messages de contrôle chemins de code et ce, à partir du serveur vers le client (encadré note: ceci est un effet secondaire d'un code existant et n'est pas dans notre intention).

Ce que nous aimerions faire est de vous assurer que tous nos RMI liées au code de la seule connue spécifié inventaire des ports. Cela inclut le registre de port (communément devrait être 1099), le port du serveur et tout les ports résultant de l'rappels.

Voici ce que nous savons déjà:

  1. LocateRegistry.getRegistry(1099) ou à retrouver.createRegistry(1099) permettra de s'assurer que le registre est à l'écoute sur 1099.
  2. À l'aide de la UnicastRemoteObject constructeur /exportObject méthode statique avec un port à l'argument de spécifier le port du serveur.

Ces points sont également couverts dans ce Soleil post sur le forum.

Ce que nous ne savons pas, c'est: comment pouvons-nous nous assurer que le client de connexion vers le serveur résultant de l'rappels ne se connecter sur un port spécifié plutôt que par défaut un port anonyme?

EDIT: Ajout d'un longuets répondre résumé de mes conclusions et comment nous avons résolu le problème. J'espère que cela va aider quelqu'un d'autre avec des problèmes similaires.

DEUXIÈME EDIT: Il s'avère que dans mon application, il semble y avoir une condition de concurrence dans la création et la modification de la prise des usines. J'ai eu envie de permettre à l'utilisateur de remplacer mes paramètres par défaut dans un script Beanshell. Malheureusement, il semble que mon script est exécuté de façon significative après la première prise est créé par l'usine. En conséquence, je suis un mélange de ports à partir de l'ensemble de valeurs par défaut et les paramètres de l'utilisateur. Plus les travaux seront tenus hors de la portée de cette question, mais je pensais point comme un point d'intérêt pour les autres personnes qui pourraient avoir de la bande de roulement de ces eaux à un certain point....

OriginalL'auteur Bob Cross | 2008-09-11