ho pensato che se ho impostato -Djava.rmi.server.hostname = localhost dovrebbe essere in ascolto solo su 127.0.0.1
No.
Perchè sono fraintendendo quello che controlli java.rmi.server.hostname?
Sì. java.rmi.server.hostname
non ha nulla a che fare con quale indirizzo IP viene ascoltato dall'oggetto remoto. Ciò è determinato dal RMIServerSocketFactory.
Per correggere il misquotation dal mio libro in un'altra risposta (poi cancellato): stringa
java.rmi.server.hostname:
nome host; il valore predefinito è l'indirizzo IP dell'host locale nel formato "punteggiato-quad" ... che è incorporato negli stub remoti creati da questa JVM quando gli oggetti remoti vengono esportati. Questo può essere usato per controllare l'indirizzo IP effettivo dei server RMI esportati da host multi-homed. Questa proprietà viene letta esattamente una volta nella vita della JVM. [1]
Per espandere su quello, può anche essere utilizzato per controllare l'indirizzo IP effettivo (come visualizzato dai client) dei server RMI esportati dagli host che si trovano dietro i dispositivi NAT. Non ha necessariamente nulla a che fare con l'host locale, ad es. in situazioni NAT e può essere un nome host, un indirizzo IPv4 a quattro punti o un indirizzo IPv6.
[1] Pitt & McNiff, java.rmi, La Guida Remote Method Invocation, Addison Wesley 2001, p.258.
0.0.0.0 è anche loopback. Forse si confonde perché sono più o meno gli stessi. (Non so quale sia la differenza) Hai provato '-Djava.rmi.server.hostname = 127.0.0.1' –
@PeterLawrey No. Niente a che fare con questo. Vedi la mia risposta. – EJP