com.zeroc.Ice.ServantLocator Maven / Gradle / Ivy
Show all versions of ice Show documentation
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
//
// Ice version 3.7.9
//
//
//
// Generated from file `ServantLocator.ice'
//
// Warning: do not edit this file.
//
//
//
package com.zeroc.Ice;
/**
* A servant locator is called by an object adapter to
* locate a servant that is not found in its active servant map.
*
* @see ObjectAdapter
* @see ObjectAdapter#addServantLocator
* @see ObjectAdapter#findServantLocator
**/
public interface ServantLocator
{
/**
* Holds the result of operation locate.
**/
public static class LocateResult
{
/**
* Default constructor.
**/
public LocateResult()
{
}
/**
* This constructor makes shallow copies of the results for operation Locate.
* @param returnValue The located servant, or null if no suitable servant has
* been found.
* @param cookie A "cookie" that will be passed to finished
.
**/
public LocateResult(Object returnValue, java.lang.Object cookie)
{
this.returnValue = returnValue;
this.cookie = cookie;
}
/**
* The located servant, or null if no suitable servant has
* been found.
**/
public Object returnValue;
/**
* A "cookie" that will be passed to finished
.
**/
public java.lang.Object cookie;
}
/**
* Called before a request is dispatched if a
* servant cannot be found in the object adapter's active servant
* map. Note that the object adapter does not automatically insert
* the returned servant into its active servant map. This must be
* done by the servant locator implementation, if this is desired.
*
* locate
can throw any user exception. If it does, that exception
* is marshaled back to the client. If the Slice definition for the
* corresponding operation includes that user exception, the client
* receives that user exception; otherwise, the client receives
* {@link UnknownUserException}.
*
* If locate
throws any exception, the Ice run time does not
* call finished
.
*
* If you call locate
from your own code, you
* must also call finished
when you have finished using the
* servant, provided that locate
returned a non-null servant;
* otherwise, you will get undefined behavior if you use
* servant locators such as the Freeze Evictor.
* @param curr Information about the current operation for which
* a servant is required.
* @return An instance of ServantLocator.LocateResult.
* @throws UserException The implementation can raise a UserException
* and the run time will marshal it as the result of the invocation.
*
* @see ObjectAdapter
* @see Current
* @see #finished
**/
ServantLocator.LocateResult locate(Current curr)
throws UserException;
/**
* Called by the object adapter after a request has been
* made. This operation is only called if locate
was called
* prior to the request and returned a non-null servant. This
* operation can be used for cleanup purposes after a request.
*
* finished
can throw any user exception. If it does, that exception
* is marshaled back to the client. If the Slice definition for the
* corresponding operation includes that user exception, the client
* receives that user exception; otherwise, the client receives
* {@link UnknownUserException}.
*
* If both the operation and finished
throw an exception, the
* exception thrown by finished
is marshaled back to the client.
* @param curr Information about the current operation call for
* which a servant was located by locate
.
* @param servant The servant that was returned by locate
.
* @param cookie The cookie that was returned by locate
.
* @throws UserException The implementation can raise a UserException
* and the run time will marshal it as the result of the invocation.
*
* @see ObjectAdapter
* @see Current
* @see #locate
**/
void finished(Current curr, Object servant, java.lang.Object cookie)
throws UserException;
/**
* Called when the object adapter in which this servant locator is
* installed is destroyed.
* @param category Indicates for which category the servant locator
* is being deactivated.
*
* @see ObjectAdapter#destroy
* @see Communicator#shutdown
* @see Communicator#destroy
**/
void deactivate(String category);
}