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.MarshalledObject; import java.rmi.RMISecurityManager; import java.util.HashMap; import java.util.Properties; public class RegisterHelloServer { static String serviceLabel = "HelloServer"; static String serverClass = "HelloServer"; static String serverClassLocation = "file:/export/home/whitney/java/whitney/jini/examples/activatable/"; static String serverDataDir = "/export/home/whitney/java/whitney/jini/examples/activatable/ServerData"; static String policyFileLocation = "/export/home/whitney/jini_data"; static String[] reggieGroups = { "whitney" }; public static void main( String[] args ) throws Exception { System.setSecurityManager(new RMISecurityManager()); System.out.println("Start main"); Properties policyFileLocation = new Properties(); policyFileLocation.put("policy", policyFileLocation); ActivationGroupDesc.CommandEnvironment ace = null; ActivationGroupDesc exampleGroup = new ActivationGroupDesc(policyFileLocation, ace); ActivationGroupID agi = ActivationGroup.getSystem().registerGroup(exampleGroup); ActivationGroup.createGroup(agi, exampleGroup, 0); HashMap initializationData = new HashMap(); initializationData.put( HelloServer.GROUP_KEY, reggieGroups ); initializationData.put( HelloServer.DATA_DIR_KEY, serverDataDir ); initializationData.put( HelloServer.SERVICE_LABEL_KEY, serviceLabel ); MarshalledObject data = new MarshalledObject( initializationData ); ActivationDesc desc = new ActivationDesc(serverClass, serverClassLocation, data, true); System.out.println("Register with rmid"); HelloInterface server = (HelloInterface) Activatable.register(desc); System.out.println("Class registered with rmid"); //Force object to be activated by accessing it. System.out.println( server.sayHello() ); System.out.println("Class activated"); } }