/*
 * Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code 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
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package java.rmi.activation;

import java.rmi.MarshalledObject;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.activation.UnknownGroupException;
import java.rmi.activation.UnknownObjectException;

An ActivationMonitor is specific to an ActivationGroup and is obtained when a group is reported active via a call to ActivationSystem.activeGroup (this is done internally). An activation group is responsible for informing its ActivationMonitor when either: its objects become active or inactive, or the group as a whole becomes inactive.
Author: Ann Wollrath
See Also:
Since: 1.2
/** * An <code>ActivationMonitor</code> is specific to an * <code>ActivationGroup</code> and is obtained when a group is * reported active via a call to * <code>ActivationSystem.activeGroup</code> (this is done * internally). An activation group is responsible for informing its * <code>ActivationMonitor</code> when either: its objects become active or * inactive, or the group as a whole becomes inactive. * * @author Ann Wollrath * @see Activator * @see ActivationSystem * @see ActivationGroup * @since 1.2 */
public interface ActivationMonitor extends Remote {
An activation group calls its monitor's inactiveObject method when an object in its group becomes inactive (deactivates). An activation group discovers that an object (that it participated in activating) in its VM is no longer active, via calls to the activation group's inactiveObject method.

The inactiveObject call informs the ActivationMonitor that the remote object reference it holds for the object with the activation identifier, id, is no longer valid. The monitor considers the reference associated with id as a stale reference. Since the reference is considered stale, a subsequent activate call for the same activation identifier results in re-activating the remote object.

Params:
  • id – the object's activation identifier
Throws:
Since:1.2
/** * An activation group calls its monitor's * <code>inactiveObject</code> method when an object in its group * becomes inactive (deactivates). An activation group discovers * that an object (that it participated in activating) in its VM * is no longer active, via calls to the activation group's * <code>inactiveObject</code> method. <p> * * The <code>inactiveObject</code> call informs the * <code>ActivationMonitor</code> that the remote object reference * it holds for the object with the activation identifier, * <code>id</code>, is no longer valid. The monitor considers the * reference associated with <code>id</code> as a stale reference. * Since the reference is considered stale, a subsequent * <code>activate</code> call for the same activation identifier * results in re-activating the remote object. * * @param id the object's activation identifier * @exception UnknownObjectException if object is unknown * @exception RemoteException if remote call fails * @since 1.2 */
public void inactiveObject(ActivationID id) throws UnknownObjectException, RemoteException;
Informs that an object is now active. An ActivationGroup informs its monitor if an object in its group becomes active by other means than being activated directly (i.e., the object is registered and "activated" itself).
Params:
  • id – the active object's id
  • obj – the marshalled form of the object's stub
Throws:
Since:1.2
/** * Informs that an object is now active. An <code>ActivationGroup</code> * informs its monitor if an object in its group becomes active by * other means than being activated directly (i.e., the object * is registered and "activated" itself). * * @param id the active object's id * @param obj the marshalled form of the object's stub * @exception UnknownObjectException if object is unknown * @exception RemoteException if remote call fails * @since 1.2 */
public void activeObject(ActivationID id, MarshalledObject<? extends Remote> obj) throws UnknownObjectException, RemoteException;
Informs that the group is now inactive. The group will be recreated upon a subsequent request to activate an object within the group. A group becomes inactive when all objects in the group report that they are inactive.
Params:
  • id – the group's id
  • incarnation – the group's incarnation number
Throws:
Since:1.2
/** * Informs that the group is now inactive. The group will be * recreated upon a subsequent request to activate an object * within the group. A group becomes inactive when all objects * in the group report that they are inactive. * * @param id the group's id * @param incarnation the group's incarnation number * @exception UnknownGroupException if group is unknown * @exception RemoteException if remote call fails * @since 1.2 */
public void inactiveGroup(ActivationGroupID id, long incarnation) throws UnknownGroupException, RemoteException; }