L’altro giorno per motivi di studio dovevo realizzare una comunicazione di rete tra due host in java utilizzando RMI (remote method invocation) ma purtroppo non riuscivo a collegarmi all’altro host la connessione veniva sempre rifiutata con il seguente errore :
java.rmi.ConnectException: Connection refused to host: ; nested exception is: java.net.ConnectException: Connection refused.
All’inizio l’ho confuso con un problema di rete ma un bel telnet mi ha levato ogni dubbio.Poi pensavo che il problema derivasse dalla mia JVM infatti io uso la JVM dell’ IBM per ppc mentre l’altro pc aveva la classica jvm SUN, ma il test con due host con JVM sun ha dato lo stesso problema. Poi girando qua e la ho scoperto il file java.policy nel quale ci sono le impostazioni relative alla sicurezza. Il file ha varie sezioni e la sintassi è semplice al fine di accettare le connessioni remote basta aggiungere la seguente riga : “permission java.security.AllPermission;” nella sezione : ” // “standard” properies that can be read by anyone”. Una volta aggiunta questa riga bastera rilanciare il programma e l’ RMI dovrebbe funzionare senza problemi. Per essere piu sicuri del funzionamento conviene copiare il file java.policy da /path-java/jre/lib/security nell propria home rinominandolo “.java.policy”. Un altro metodo che però a me non ha funzionato è questo:
creare ad esempio java.mypolicy un file e scriverci dentro :
grant {
permission java.security.AllPermission;
};
Poi quando lanciamo il nostro programma aggiungiamo -Djava security.policy=mypolicy
esempio
java -Djava.security.policy=/path/mypolicy.java Server

Leave a Reply