java.rmi.activation


1. Remote Object Activation

import java.rmi.activation.ActivationID;
import java.rmi.activation.ActivationGroup;
import java.rmi.activation.ActivationGroupDesc;
import java.rmi.activation.ActivationInstantiator;
import java.rmi.activation.ActivationMonitor;
import java.rmi.activation.ActivationSystem;
import java.rmi.activation.UnknownObjectException;

public class RemoteObjectActivation {

    public static void main(String[] args) {
        try {
            // Create an activation group
            ActivationGroupDesc groupDesc = new ActivationGroupDesc(ActivationGroupID.random(), null);
            ActivationGroup group = ActivationGroup.getSystem().createGroup(groupDesc);

            // Create an activation descriptor
            ActivationDesc desc = new ActivationDesc(group.getID(), SomeRemoteClass.class.getName(), null, null);

            // Register the activation descriptor with the activation system
            ActivationID id = ActivationSystem.registerObject(desc);

            // Start the activation monitor
            ActivationMonitor monitor = new ActivationMonitor(ActivationGroupID.random(), group);
            monitor.start();

            // Get a remote reference to the activated object
            SomeRemoteClass remoteObject = (SomeRemoteClass) ActivationSystem.getObject(id);

            // Use the remote object
            remoteObject.someMethod();

            // Unregister the activation descriptor from the activation system
            ActivationSystem.unregisterObject(id);

        } catch (UnknownObjectException | RemoteException | ActivationException e) {
            e.printStackTrace();
        }
    }
}

2. Remote Object Deactivation

3. Custom Activation Instantiator

4. Dynamic Invocation of Remote Methods

5. Remote Object Callbacks

6. Remote Object Persistence

7. Remote Object Factories