RequestDispatchInfoInterceptorpublic class RequestDispatchInfoInterceptor extends org.omg.CORBA.LocalObject implements org.omg.PortableInterceptor.IORInterceptor
Fields Summary |
---|
public static final int | TAG_REQUEST_DISPATCH_INFO_ID | public static final String | baseMsg | private static Logger | _logger | private org.omg.IOP.Codec | codec |
Constructors Summary |
---|
public RequestDispatchInfoInterceptor(org.omg.IOP.Codec c)Creates a new instance of RequestDispatchInfoInterceptor
codec = c;
|
Methods Summary |
---|
private void | addDispatchInfoComponent(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 void | destroy()Provides an opportunity to destroy this interceptor.
The destroy method is called during ORB.destroy . When an
application calls ORB.destroy , the ORB:
- waits for all requests in progress to complete
- calls the
Interceptor.destroy operation for each
interceptor
- 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 void | establish_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.
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.String | name()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 baseMsg;
|
|