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 {
}
}