danbikel.util.proxy
Class Retry
java.lang.Object
danbikel.util.proxy.Retry
- All Implemented Interfaces:
- Serializable, InvocationHandler
- Direct Known Subclasses:
- AbstractSwitchboardUser.SBUserRetry
public class Retry
- extends Object
- implements InvocationHandler, Serializable
An invocation handler for which proxy instances may be constructed
for RMI clients such that if a remote method fails, the method
will be re-invoked repeatedly until success. The number of retries
of the remote method is specified at construction time.
- See Also:
- Serialized Form
|
Field Summary |
static int |
retryIndefinitely
Indicates to re-try the remote object indefinitely. |
|
Constructor Summary |
Retry(Object stub,
int retries,
long sleep)
Constructs a proxy invocation handler to retry an RMI server in
the event of a method failure. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
retryIndefinitely
public static final int retryIndefinitely
- Indicates to re-try the remote object indefinitely.
The value of this constant is -1.
- See Also:
- Constant Field Values
Retry
public Retry(Object stub,
int retries,
long sleep)
- Constructs a proxy invocation handler to retry an RMI server in
the event of a method failure. Note that the total number of
tries will be one more than the value of this parameter.
- Parameters:
stub - the remote object stub which should be validated
and which will be performing the actual method computationretries - the number of times the method will be re-tried
on the RMI server before giving up
to re-try indefinitelysleep - the number of milliseconds to sleep in between tries
- Throws:
IllegalArgumentException - if retries is neither
non-negative nor retryIndefinitely
proxyFor
public static Object proxyFor(Object stub,
int retries,
long sleep)
keepTrying
protected boolean keepTrying()
- Returns whether to keep trying a remote method in the face of failure.
This method is guaranteed to be called before each attempt at a
method invocation. By overriding this method, subclasses may
perform arbitrary tests to determine whether to stop re-trying
the RMI server. The default implementation simply returns
true.
- Returns:
true under all circumstances
invoke
public Object invoke(Object proxy,
Method method,
Object[] args)
throws Throwable
- Specified by:
invoke in interface InvocationHandler
- Throws:
Throwable
Author: Dan Bikel.