Ich brauche eine Möglichkeit, einen statischen Port für rmi-Clients einzustellen. Der Server verwendet einen festen Port für seine Verbindungen, aber die Clientseite erstellt einen dynamischen Port, obwohl ich eine Client-Socket-Factory eingerichtet habe.Wie wird der statische Client-Port für rmi Clients eingestellt?
Die Ursache, die ich gefunden habe, ist in der Klasse "TCPChannel". In dieser Klasse sehe ich diesen Code:
TCPEndpoint.getLocalEndpoint(0, (RMIClientSocketFactory)null, (RMIServerSocketFactory)null);
Dies wird eindeutig nicht funktionieren, da dieser Code nicht bewusst meine Socket-Factory ist. Offensichtlich ist diese Klasse nicht RMI-spezifisch.
Frage ist - Gibt es eine Möglichkeit, die TCP-Socket-Erstellung zu überschreiben, so dass es überhaupt keine dynamischen Ports erstellt?
Einstellen der Client-Socket-Factory wie folgt: RMISocketFactory.setSocketFactory (new RMIClientSocketFactoryWithSocketAdaptor (opts)); RMIClientSocketFactoryWithSocketAdaptor ist meine impl für Socket-Factory. Wir müssen statische Ports als Teil einer Sicherheitsanforderung haben, die alle offenen dynamischen Ports einschränkt. Die Klasse, die nicht RMI-spezifisch ist, bezog sich auf 'TCPChannel'. – YaOg
Das ist ungefähr 18 Jahre alt. Die moderne Art, dies zu tun, besteht darin, eine 'RMIClientSocketFactory' bereitzustellen, wenn Sie * das Objekt * auf dem * Server * exportieren, was auch bedeutet, dass es serialisierbar sein muss. 'TCPChannel' ist 100% RMI-spezifisch und wird für keinen anderen Zweck verwendet. Die Sicherheitsanforderungen, die Sie erhalten haben, sind zu 100% sinnlos und sollten von einer kompetenten Person überprüft werden. Nur weil Sie eine Firewall-Regel für ausgehende Ports festlegen können, bedeutet ** NICHT **, dass es eine gute Idee ist. Es ist nicht. Ich habe das hier und anderswo seit fast 20 Jahren gesagt, und ich habe noch nie ein Gegenargument oder eine Gegeninstanz gesehen. – EJP
gültige Punkte. wir werden es noch einmal überdenken. Vielen Dank. – YaOg