Premessa: Sono tornato sulla libreria rmi di java per preparare un esame dopo un bel po' di tempo. Per testare il funzionamento ho provato un banalissimo programma, ma quando vado a testare il programma lato server mi da problemi. Premetto che prima di ora funzionava tutto e non ho apportato alcuna modifica al sistema se non installare visual studio.

Nel dettaglio::
1. Interfaccia che richiama i metodi lato client:

package calc;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ICalcolatrice
extends Remote{

double somma(double a, double b)
throws RemoteException;

double sottrai(double a, double b)
throws RemoteException;
}
-----------------------------------------------------------------------------------------
2. Implementazione dell'interfaccia da istanziare lato server:
package calc;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

public class Calcolatrice
extends UnicastRemoteObject
implements ICalcolatrice{

public Calcolatrice() throws RemoteException{
super();
}

public double somma(double a, double b)
throws RemoteException {
return a+b;
}

public double sottrai(double a, double b)
throws RemoteException {
return a-b;
}

}
-----------------------------------------------------------------------------------------
3. Classe main lato server:

package calc;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.rmi.Naming;

public class Server {
public Server(){
try{
ICalcolatrice c = new Calcolatrice();
Naming.rebind("rmi://localhost:1099/Calc", c);
System.out.println("Server attivo...");
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch(RemoteException e){
e.printStackTrace();
}
}
public static void main(String[] args){
new Server();
}
}

Creo il file Calcolatrice_stub.class con il comando rmic e quando lancio il server mi succede questo, mi solleva un'eccezzione MalformedURLException:

java.rmi.ConnectException: Connection refused to host: localhost; nested exception is:
java.net.ConnectException: Connection refused
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEnd point.java:601)
at sun.rmi.transport.tcp.TCPChannel.createConnection( TCPChannel.java:198)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCP Channel.java:184)
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java: 322)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at calc.Server.<init>(Server.java:11)
at calc.Server.main(Server.java:21)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl .java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSoc ketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.j ava:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.j ava:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.cre ateSocket(RMIDirectSocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.cre ateSocket(RMIMasterSocketFactory.java:128)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEnd point.java:595)
... 7 more

Provato su Win_XP con e senza firewall e Linux, stesso problema. Non mi ricordo di aver mai dovuto settare nulla prima e non è un programma così raffinato o complesso da dover richiedere l'uso esplicito di registri della libreria rmi o chissà che altro. AIUTOOOO!!! Qualcuno saprebbe darmi una dritta o provare a testare il programma sulla sua macchina per vedere se il problema è nel codice o no?