import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Serveur { public static void main(String[] args){ System.out.println("Creation de l'objet serveur"); if (System.getSecurityManager() == null) { System.setSecurityManager(new java.rmi.RMISecurityManager()); } RMISSLClientSocketFactory clientFactory = new RMISSLClientSocketFactory(); RMISSLServerSocketFactory serverFactory = new RMISSLServerSocketFactory(); ConnexionServeur objserveur=null; try { objserveur = new ConnexionServeurImpl(0, clientFactory, serverFactory); } catch (RemoteException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } System.out.println("Referencement dans le registry..."); try { Registry registry= LocateRegistry.createRegistry(2004, clientFactory, serverFactory); // Registry registry= LocateRegistry.createRegistry(2004, clientFactory, serverFactory); // pourrait permettre de sécuriser l'accès au RMI registry, mais... impossible de lui passer // les propriétés nécessaires pour qu'il configure le tunnel Ssh. Mais si, car, comme c'est cette // JVM serveur qui crée le rmi registry, et en plus, lui passe des factory utilisant SSL, // alors, la connexion entre l objet serveur et le rmi registry devient sécurisée. // Il faudra aussi que le client qui fait le lookup, soit prêt à utilisr une connexion SSL, car, // il semble bien que la manière dont le rmi registry a été créée impose dès lors que toute communication // avec ce registry utilise des sockets SSL. System.out.println("on a lacces au registry ecoutant sur 2004"); registry.rebind("Serveur", objserveur); } catch (RemoteException e) { e.printStackTrace(); } System.out.println("Attente d invocation, Ctrl-C pour stopper!"); } }