Exemplo de servidor ativável


// CountImpl.java, Implementacao de Count "ativavel" 

import java.rmi.*;
import java.rmi.activation.*;

public class CountImpl extends Activatable
    implements Count {
    private int sum;
    
    // Construtor publico
    public CountImpl(String name, String src, int port) 
	throws RemoteException, ActivationException, java.io.IOException {
	super(src, new MarshalledObject(name), false, port);
	System.out.println("Construtor explicito invocado");
    }

    // Contrutor interno
    protected CountImpl(ActivationID id, MarshalledObject arg) 
	throws RemoteException {
	super(id, 0);
	System.out.println("Construtor de re-ativacao");
    }

    public  void set(int val) throws RemoteException {
	sum = val;
    }
    
    public  void reset() throws RemoteException {
	sum = 0;
    }
    
    public int get() throws RemoteException {
	return sum;
    }
    
    public int increment() throws RemoteException {
	return sum++;
    }
}