FileDocCategorySizeDatePackage
RequestDispatchInfoInterceptor.javaAPI DocGlassfish v2 API6938Fri May 04 22:34:54 BST 2007com.sun.enterprise.iiop

RequestDispatchInfoInterceptor

public class RequestDispatchInfoInterceptor extends LocalObject implements IORInterceptor

Fields Summary
public static final int
TAG_REQUEST_DISPATCH_INFO_ID
public static final String
baseMsg
private static Logger
_logger
private Codec
codec
Constructors Summary
public RequestDispatchInfoInterceptor(Codec c)
Creates a new instance of RequestDispatchInfoInterceptor

        codec = c;
    
Methods Summary
private voidaddDispatchInfoComponent(RequestDispatchPolicy policy, org.omg.PortableInterceptor.IORInfo iorInfo)

        Any any = ORB.init().create_any();
	any.insert_long(policy.getDispatchId());

	byte[] dispatchValue = null;
        try {
	    dispatchValue = codec.encode_value(any);
        } catch (org.omg.IOP.CodecPackage.InvalidTypeForEncoding e) {
            throw new INTERNAL("InvalidTypeForEncoding "+e.getMessage());
        }
	TaggedComponent taggedComponent = new TaggedComponent(
						TAG_REQUEST_DISPATCH_INFO_ID,
						dispatchValue);
	iorInfo.add_ior_component(taggedComponent);
    
public voiddestroy()
Provides an opportunity to destroy this interceptor. The destroy method is called during ORB.destroy. When an application calls ORB.destroy, the ORB:
  1. waits for all requests in progress to complete
  2. calls the Interceptor.destroy operation for each interceptor
  3. completes destruction of the ORB
Method invocations from within Interceptor.destroy on object references for objects implemented on the ORB being destroyed result in undefined behavior. However, method invocations on objects implemented on an ORB other than the one being destroyed are permitted. (This means that the ORB being destroyed is still capable of acting as a client, but not as a server.)

    
public voidestablish_components(org.omg.PortableInterceptor.IORInfo iorInfo)
A server side ORB calls the establish_components operation on all registered IORInterceptor instances when it is assembling the list of components that will be included in the profile or profiles of an object reference. This operation is not necessarily called for each individual object reference. For example, the POA specifies policies at POA granularity and therefore, this operation might be called once per POA rather than once per object. In any case, establish_components is guaranteed to be called at least once for each distinct set of server policies.

An implementation of establish_components must not throw exceptions. If it does, the ORB shall ignore the exception and proceed to call the next IOR Interceptor's establish_components operation.

param
info The IORInfo instance used by the ORB service to query applicable policies and add components to be included in the generated IORs.

        try {
	    RequestDispatchPolicy rdPolicy = null;
	    try {
		rdPolicy = (RequestDispatchPolicy)iorInfo.get_effective_policy(
			   POARemoteReferenceFactory.REQUEST_DISPATCH_POLICY_TYPE);
	    } catch ( INV_POLICY ex ) {return;}

	    if ( rdPolicy != null ) {
		addDispatchInfoComponent(rdPolicy, iorInfo);
	    }
        } catch (Exception e) {
            _logger.log(Level.WARNING,"Exception in " + baseMsg, e);
        }
    
public java.lang.Stringname()
Returns the name of the interceptor.

Each Interceptor may have a name that may be used administratively to order the lists of Interceptors. Only one Interceptor of a given name can be registered with the ORB for each Interceptor type. An Interceptor may be anonymous, i.e., have an empty string as the name attribute. Any number of anonymous Interceptors may be registered with the ORB.

return
the name of the interceptor.

        return baseMsg;