import java.rmi.activation.Activatable; import java.rmi.activation.ActivationID; import java.rmi.RemoteException; public class MyObject extends Activatable implements MyInterface { public MyObject(ActivationID id, int port) throws RemoteException { super(id, port); } @Override public void doSomething() throws RemoteException { System.out.println("Doing something..."); } } import java.rmi.activation.ActivationGroup; import java.rmi.activation.ActivationGroupDesc; import java.rmi.activation.ActivationException; import java.rmi.activation.ActivationID; import java.rmi.activation.Activator; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class MyGroup extends ActivationGroup { private ActivationGroupID groupId; public MyGroup(ActivationGroupID groupId, ActivationGroupDesc desc, long incarnation) throws ActivationException, RemoteException { super(groupId, desc, incarnation); this.groupId = groupId; } @Override public void activeObject(ActivationID id, Remote obj) throws ActivationException { super.activeObject(id, obj); System.out.println("Object activated: " + id); } public static void main(String[] args) { try { ActivationGroupDesc groupDesc = new ActivationGroupDesc(null, null); ActivationGroupID groupId = ActivationGroup.getSystem().registerGroup(groupDesc); MyGroup group = new MyGroup(groupId, groupDesc, 0); UnicastRemoteObject.exportObject(group, 0); ActivationSystem system = ActivationGroup.getSystem(); Activator activator = system.getActivator(); MyObject obj = new MyObject(system.registerObject(group), 0); group.activeObject(obj.getID(), obj); System.out.println("Object activated successfully."); } catch (Exception e) { e.printStackTrace(); } } } import java.rmi.activation.ActivationException; import java.rmi.activation.ActivationSystem; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; public class MyApp { public static void main(String[] args) { try { Registry registry = LocateRegistry.createRegistry(1099); ActivationSystem system = (ActivationSystem) UnicastRemoteObject.exportObject(new MyActivationSystem(), 0); registry.bind(ActivationSystem.class.getName(), system); System.out.println("Activation system running..."); } catch (Exception e) { e.printStackTrace(); } } static class MyActivationSystem implements ActivationSystem { } }


上一篇:
下一篇:
切换中文