import java.rmi.MarshalledObject; import java.rmi.Naming; import java.rmi.RMISecurityManager; import java.rmi.activation.Activatable; import java.rmi.activation.ActivationDesc; import java.rmi.activation.ActivationGroup; import java.rmi.activation.ActivationGroupDesc; import java.rmi.activation.ActivationGroupID; import java.rmi.registry.LocateRegistry; import java.util.Properties; // Class qui permet de configurer et d'instancier l'objet distant Bonjour public class InstallBonjour { public static void main(String[] args) throws Exception { System.setSecurityManager(new RMISecurityManager()); //Le fichier de privilège devrait être spécifié Properties props = new Properties(); props.put("java.security.policy", "priv.policy"); //Un descripteur de groupe, instance de ActivationGroupDesc ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(props, ace); // Une fois que l'ActivationGroupDesc a été instancié, il est enregistré avec // le système d'activation afin d'obtenir son identification. ActivationGroupID agi = ActivationGroup.getSystem().registerGroup( exampleGroup); // le chemin des class nécessaire quand l'objet est activé. String location = args[0]; //Le paramètre du constructeur. MarshalledObject data = null; // Constructeur d'ActivationDesc sera employé pour identifier uniquement // cette classe. // - identifiant du système d'activation // - nom de l'objet // - URL chargement bytecode de la classe si elle n’est pas chargeable par CLASSPATH // - données pour le constructeur de la classe (MarshalledObject) ActivationDesc desc = new ActivationDesc(agi, "BonjourActivatable", location, data); //Inscription de l'objet au démon (rmid) BonjourInterface mri = (BonjourInterface) Activatable.register(desc); System.out.println("j'ai recu le S_tub"); //Enregistre l'object sur le reseau Naming.rebind("//localhost/Bonjour", mri); System.out.println("Exported Bonjour"); System.exit(0); } }