<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!-- package.html - describes classes in java.rmi.activation package.
   Copyright (C) 2002, 2006 Free Software Foundation, Inc.

This file is part of GNU Classpath.

GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING.  If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.

Linking this library statically or dynamically with other modules is
making a combined work based on this library.  Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.

As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module.  An independent module is a module which is not derived from
or based on this library.  If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so.  If you do not wish to do so, delete this
exception statement from your version. -->

<html>
<head><title>GNU Classpath - java.rmi.activation</title></head>

<body>
In the previous Classpath releases, an instance of a UnicastRemoteObject
could be accessed from a server that:
<ul>
<li>has created an instance of that object<li>
<li>has been running <i>all<i> the time</li>
</ul>
<p>The the activation system allows to activate and execute the object
implementation on demand rather than running all time. If the activation
system is persistent, the server can be terminated and then restarted.
The clients, still holding remote references to the server side 
activatable objects, will activate those objects again. The server side
objects will be reinstantiated (activated) during the first call of any
remote method of such object.
</p><p>
The RMI client code for activatable objects is no different than the code for 
accessing non-activatable remote objects. Activation is a server-side feature.
</p><p>
In order for an object to be activated, the "activatable" object class 
(independently if it extends the {@link Activatable} class or not) defines a 
special public constructor that takes two arguments, its activation identifier 
({@link ActivationID}) and its activation data ({@link java.rmi.MarshalledObject}), 
supplied in the activation descriptor used during registration. When an 
activation group activates a remote object, it constructs the object via 
this special constructor. The remote object implementation may use the 
activation data to initialize itself in a needed manner. The remote object may
also retain its activation identifier, so that it can inform the activation 
group when it becomes inactive (via a call to the Activatable.inactive method).
</p>
@author Audrius Meskauskas (audriusa@bioinformatics.org) (from empty)
</body>
</html>
