Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## javax.naming
Class ReferralException

    java.lang.Object
      |
      +--java.lang.Throwable
            |
            +--java.lang.Exception
                  |
                  +--javax.naming.NamingException
                        |
                        +--javax.naming.ReferralException

All Implemented Interfaces:
  Serializable

Direct Known Subclasses:
  LdapReferralException

public abstract class ReferralException
extends NamingException

This abstract class is used to represent a referral exception, which is generated in response to a referral such as that returned by LDAP v3 servers.

A service provider provides a subclass of `ReferralException` by providing implementations for `getReferralInfo()` and `getReferralContext()` (and appropriate constructors and/or corresponding "set" methods).

The following code sample shows how `ReferralException` can be used.

>     	while (true) {
>     	    try {
>     		bindings = ctx.listBindings(name);
>     		while (bindings.hasMore()) {
>     		    b = bindings.next();
>     		    ...
>     		}
>     		break;
>     	    } catch (ReferralException e) {
>     		ctx = e.getReferralContext();
>     	    }
>     	}

`ReferralException` is an abstract class. Concrete implementations determine its synchronization and serialization properties.

An environment parameter passed to the `getReferralContext()` method is owned by the caller. The service provider will not modify the object or keep a reference to it, but may keep a reference to a clone of it.

Since:
  1.3
See Also:
  Serialized Form

Field Summary

Fields inherited from class javax.naming.NamingException
`remainingName, resolvedName, resolvedObj, rootException`

Constructor Summary
`protected` | `ReferralException()` Constructs a new instance of ReferralException.
`protected` | `ReferralException(String explanation)` Constructs a new instance of ReferralException using the explanation supplied.

Method Summary
`abstract Context` | `getReferralContext()` Retrieves the context at which to continue the method.
`abstract Context` | `getReferralContext(Hashtable env)` Retrieves the context at which to continue the method using environment properties.
`abstract Object` | `getReferralInfo()` Retrieves information (such as URLs) related to this referral.
`abstract void` | `retryReferral()` Retries the referral currently being processed.
`abstract boolean` | `skipReferral()` Discards the referral about to be processed.

Methods inherited from class javax.naming.NamingException
`appendRemainingComponent, appendRemainingName, getExplanation, getRemainingName, getResolvedName, getResolvedObj, getRootCause, printStackTrace, printStackTrace, printStackTrace, setRemainingName, setResolvedName, setResolvedObj, setRootCause, toString, toString`

Methods inherited from class java.lang.Throwable
`fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, initCause, setStackTrace`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ReferralException

    protected ReferralException(String explanation)

  Constructs a new instance of ReferralException using the explanation supplied. All other fields are set to null.

Parameters:
  `explanation` - Additional detail about this exception. Can be null.
See Also:
  `Throwable.getMessage()`

### ReferralException

    protected ReferralException()

  Constructs a new instance of ReferralException. All fields are set to null.

Method Detail

### getReferralInfo

    public abstract Object getReferralInfo()

  Retrieves information (such as URLs) related to this referral. The program may examine or display this information to the user to determine whether to continue with the referral, or to determine additional information needs to be supplied in order to continue with the referral.

  Returns:
    Non-null referral information related to this referral.

### getReferralContext

    public abstract Context getReferralContext()
                                        throws NamingException

  Retrieves the context at which to continue the method. Regardless of whether a referral is encountered directly during a context operation, or indirectly, for example, during a search enumeration, the referral exception should provide a context at which to continue the operation. The referral context is created using the environment properties of the context that threw the ReferralException.

  To continue the operation, the client program should re-invoke the method using the same arguments as the original invocation.

  Returns:
    The non-null context at which to continue the method.
  Throws:
    `NamingException` - If a naming exception was encountered. Call either `retryReferral()` or `skipReferral()` to continue processing referrals.

### getReferralContext

    public abstract Context getReferralContext(Hashtable env)
                                        throws NamingException

  Retrieves the context at which to continue the method using environment properties. Regardless of whether a referral is encountered directly during a context operation, or indirectly, for example, during a search enumeration, the referral exception should provide a context at which to continue the operation.

  The referral context is created using `env` as its environment properties. This method should be used instead of the no-arg overloaded form when the caller needs to use different environment properties for the referral context. It might need to do this, for example, when it needs to supply different authentication information to the referred server in order to create the referral context.

  To continue the operation, the client program should re-invoke the method using the same arguments as the original invocation.

  Parameters:
    `env` - The possibly null environment to use when retrieving the referral context. If null, no environment properties will be used.
  Returns:
    The non-null context at which to continue the method.
  Throws:
    `NamingException` - If a naming exception was encountered. Call either `retryReferral()` or `skipReferral()` to continue processing referrals.

### skipReferral

    public abstract boolean skipReferral()

  Discards the referral about to be processed. A call to this method should be followed by a call to `getReferralContext` to allow the processing of other referrals to continue. The following code fragment shows a typical usage pattern.

  >     	} catch (ReferralException e) {
  >     	    if (!shallIFollow(e.getReferralInfo())) {
  >     		if (!e.skipReferral()) {
  >     		    return;
  >     		}
  >     	    }
  >     	    ctx = e.getReferralContext();
  >     	}

  Returns:
    true If more referral processing is pending; false otherwise.

### retryReferral

    public abstract void retryReferral()

  Retries the referral currently being processed. A call to this method should be followed by a call to `getReferralContext` to allow the current referral to be retried. The following code fragment shows a typical usage pattern.

  >     	} catch (ReferralException e) {
  >     	    while (true) {
  >     		try {
  >     		    ctx = e.getReferralContext(env);
  >     		    break;
  >     		} catch (NamingException ne) {
  >     		    if (! shallIRetry()) {
  >     			return;
  >     		    }
  >     		    // modify environment properties (env), if necessary
  >     		    e.retryReferral();
  >     		}
  >     	    }
  >     	}

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| JavaTM 2 Platform Std. Ed. v1.4.1
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.

Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.