Buonasera,

Per esercizio volevo provare a fare un programmino Client/Server con RMI. Il mio scopo sarebbe quello di avere una piccola interfaccia grafica su server (un JFrame con un JButton e una JLabel), in cui il bottone una volta cliccato cambi il testo mostrato nella JLabel. Vorrei che a seconda del Client che clicca il bottone, la label prenda un nome differente. Ad esempio se lancio un client che si chiama Giovanni e un client che si chiama Pietro voglio che a seconda di chi clicca esca il proprio nome nella label. Ho fatto una classe server, una server interface e una classe client. Per ultimo ho implementato una classe con all'interno un main dove creo due client differenti con nomi differenti. Purtroppo non riesco a farlo funzionare. Provo a postare il codice delle mie classi magari qualcuno di voi sa aiutarmi, grazie mille in anticipo a tutti
codice:
public class Server implements ServerInterface{
   private JFrame frame;
   private JButton btnCambia;
   private JLabel lblNome;
   public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
         public void run() {
            try {
               Server window = new Server();
               window.frame.setVisible(true);
               Server server = new Server();
               ServerInterface stub = (ServerInterface) UnicastRemoteObject.exportObject((Remote) server,0);
               Registry registro = LocateRegistry.getRegistry();
               registro.bind("server", stub);


            } catch (Exception e) {
               e.printStackTrace();
            }
         }
      });
   }
   public Server() {
      initialize();
   }
   private void initialize() {
      frame = new JFrame();
      frame.setBounds(100, 100, 450, 300);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().setLayout(null);
      lblNome = new JLabel("Nome");
      lblNome.setBounds(198, 76, 61, 16);
      frame.getContentPane().add(lblNome);
      btnCambia = new JButton("Cambia");
      btnCambia.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            try {
               cambia();
            } catch (RemoteException e1) {
               e1.printStackTrace();
            }
         }
      });
      btnCambia.setBounds(165, 178, 117, 29);
      frame.getContentPane().add(btnCambia);
   }
   public void cambia() throws RemoteException {
      lblNome.setText(Client.nome);
   }
}


public interface ServerInterface extends Remote {
   void cambia() throws RemoteException;
}


public class Client{
   public static String nome;
   public static void main(String args[]) {
      try{
         Registry registro = LocateRegistry.getRegistry();
         ServerInterface i = (ServerInterface) registro.lookup("server");
      }
      catch (Exception e){   
      }   
   }
   public Client(String n){
      nome = n;
   }
}


public class Application {
   public static void main(String[] args) {
      Client C1 = new Client("Paolo");
      Client C2 = new Client("Giovanni");
   }
}