Class RetryServerRequestInterceptor
- java.lang.Object
-
- org.omg.CORBA.LocalObject
-
- com.sun.corba.ee.impl.plugin.hwlb.RetryServerRequestInterceptor
-
- All Implemented Interfaces:
java.io.Serializable
,Object
,IDLEntity
,Interceptor
,InterceptorOperations
,ORBInitializer
,ORBInitializerOperations
,ServerRequestInterceptor
,ServerRequestInterceptorOperations
public class RetryServerRequestInterceptor extends LocalObject implements ORBInitializer, ServerRequestInterceptor
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.String
baseMsg
private static boolean
debug
private static boolean
rejectingRequests
-
Constructor Summary
Constructors Constructor Description RetryServerRequestInterceptor()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
destroy()
Provides an opportunity to destroy this interceptor.static boolean
getRejectingRequests()
java.lang.String
name()
Returns the name of the interceptor.void
post_init(ORBInitInfo info)
Called during ORB initialization.void
pre_init(ORBInitInfo info)
Called during ORB initialization.void
receive_request(ServerRequestInfo ri)
Allows an Interceptor to query request information after all the information, including operation parameters, are available.void
receive_request_service_contexts(ServerRequestInfo ri)
Allows the interceptor to process service context information.void
send_exception(ServerRequestInfo ri)
Allows an Interceptor to query the exception information and modify the reply service context before the exception is thrown to the client.void
send_other(ServerRequestInfo ri)
Allows an Interceptor to query the information available when a request results in something other than a normal reply or an exception.void
send_reply(ServerRequestInfo ri)
Allows an Interceptor to query reply information and modify the reply service context after the target operation has been invoked and before the reply is returned to the client.static void
setRejectingRequests(boolean x)
-
Methods inherited from class org.omg.CORBA.LocalObject
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface, _get_interface_def, _get_policy, _hash, _invoke, _is_a, _is_equivalent, _is_local, _non_existent, _orb, _release, _releaseReply, _request, _request, _servant_postinvoke, _servant_preinvoke, _set_policy_override, validate_connection
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.omg.CORBA.Object
_create_request, _create_request, _duplicate, _get_domain_managers, _get_interface_def, _get_policy, _hash, _is_a, _is_equivalent, _non_existent, _release, _request, _set_policy_override
-
-
-
-
Method Detail
-
getRejectingRequests
public static boolean getRejectingRequests()
-
setRejectingRequests
public static void setRejectingRequests(boolean x)
-
name
public java.lang.String name()
Description copied from interface:InterceptorOperations
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.
- Specified by:
name
in interfaceInterceptorOperations
- Returns:
- the name of the interceptor.
-
destroy
public void destroy()
Description copied from interface:InterceptorOperations
Provides an opportunity to destroy this interceptor. The destroy method is called duringORB.destroy
. When an application callsORB.destroy
, the ORB:- waits for all requests in progress to complete
- calls the
Interceptor.destroy
operation for each interceptor - completes destruction of the ORB
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.)- Specified by:
destroy
in interfaceInterceptorOperations
-
receive_request_service_contexts
public void receive_request_service_contexts(ServerRequestInfo ri)
Description copied from interface:ServerRequestInterceptorOperations
Allows the interceptor to process service context information.At this interception point, Interceptors must get their service context information from the incoming request transfer it to
PortableInterceptor.Current
's slots.This interception point is called before the servant manager is called. Operation parameters are not yet available at this point. This interception point may or may not execute in the same thread as the target invocation.
This interception point may throw a system exception. If it does, no other Interceptors'
receive_request_service_contexts
operations are called. Those Interceptors on the Flow Stack are popped and theirsend_exception
interception points are called.This interception point may also throw a
ForwardRequest
exception. If an Interceptor throws this exception, no other Interceptors'receive_request_service_contexts
operations are called. Those Interceptors on the Flow Stack are popped and theirsend_other
interception points are called.Compliant Interceptors shall properly follow
completion_status
semantics if they throw a system exception from this interception point. Thecompletion_status
shall be COMPLETED_NO.- Specified by:
receive_request_service_contexts
in interfaceServerRequestInterceptorOperations
- Parameters:
ri
- Information about the current request being intercepted.
-
receive_request
public void receive_request(ServerRequestInfo ri)
Description copied from interface:ServerRequestInterceptorOperations
Allows an Interceptor to query request information after all the information, including operation parameters, are available. This interception point shall execute in the same thread as the target invocation.In the DSI model, since the parameters are first available when the user code calls
arguments
,receive_request
is called from withinarguments
. It is possible thatarguments
is not called in the DSI model. The target may callset_exception
before callingarguments
. The ORB shall guarantee thatreceive_request
is called once, either througharguments
or throughset_exception
. If it is called throughset_exception
, requesting the arguments will result inNO_RESOURCES
being thrown with a standard minor code of 1.This interception point may throw a system exception. If it does, no other Interceptors'
receive_request
operations are called. Those Interceptors on the Flow Stack are popped and theirsend_exception
interception points are called.This interception point may also throw a
ForwardRequest
exception. If an Interceptor throws this exception, no other Interceptors'receive_request
operations are called. Those Interceptors on the Flow Stack are popped and theirsend_other
interception points are called.Compliant Interceptors shall properly follow
completion_status
semantics if they throw a system exception from this interception point. Thecompletion_status
shall beCOMPLETED_NO
.- Specified by:
receive_request
in interfaceServerRequestInterceptorOperations
- Parameters:
ri
- Information about the current request being intercepted.
-
send_reply
public void send_reply(ServerRequestInfo ri)
Description copied from interface:ServerRequestInterceptorOperations
Allows an Interceptor to query reply information and modify the reply service context after the target operation has been invoked and before the reply is returned to the client. This interception point shall execute in the same thread as the target invocation.This interception point may throw a system exception. If it does, no other Interceptors'
send_reply
operations are called. The remaining Interceptors in the Flow Stack shall have theirsend_exception
interception point called.Compliant Interceptors shall properly follow
completion_status
semantics if they throw a system exception from this interception point. Thecompletion_status
shall beCOMPLETED_YES
.- Specified by:
send_reply
in interfaceServerRequestInterceptorOperations
- Parameters:
ri
- Information about the current request being intercepted.
-
send_exception
public void send_exception(ServerRequestInfo ri)
Description copied from interface:ServerRequestInterceptorOperations
Allows an Interceptor to query the exception information and modify the reply service context before the exception is thrown to the client. When an exception occurs, this interception point is called. This interception point shall execute in the same thread as the target invocation.This interception point may throw a system exception. This has the effect of changing the exception which successive Interceptors popped from the Flow Stack receive on their calls to
send_exception
. The exception thrown to the client will be the last exception thrown by an Interceptor, or the original exception if no Interceptor changes the exception.This interception point may also throw a
ForwardRequest
exception. If an Interceptor throws this exception, no other Interceptors'send_exception
operations are called. The remaining Interceptors in the Flow Stack shall have theirsend_other
interception points called.If the
completion_status
of the exception is notCOMPLETED_NO
, then it is inappropriate for this interception point to throw aForwardRequest
exception. The request's at-most-once semantics would be lost.Compliant Interceptors shall properly follow
completion_status
semantics if they throw a system exception from this interception point. If the original exception is a system exception, thecompletion_status
of the new exception shall be the same as on the original. If the original exception is a user exception, then thecompletion_status
of the new exception shall beCOMPLETED_YES
.- Specified by:
send_exception
in interfaceServerRequestInterceptorOperations
- Parameters:
ri
- Information about the current request being intercepted.
-
send_other
public void send_other(ServerRequestInfo ri)
Description copied from interface:ServerRequestInterceptorOperations
Allows an Interceptor to query the information available when a request results in something other than a normal reply or an exception. For example, a request could result in a retry (e.g., a GIOP Reply with aLOCATION_FORWARD
status was received). This interception point shall execute in the same thread as the target invocation.This interception point may throw a system exception. If it does, no other Interceptors'
send_other
operations are called. The remaining Interceptors in the Flow Stack shall have theirsend_exception
interception points called.This interception point may also throw a
ForwardRequest
exception. If an Interceptor throws this exception, successive Interceptors'send_other
operations are called with the new information provided by theForwardRequest
exception.Compliant Interceptors shall properly follow
completion_status
semantics if they throw a system exception from this interception point. Thecompletion_status
shall beCOMPLETED_NO
.- Specified by:
send_other
in interfaceServerRequestInterceptorOperations
- Parameters:
ri
- Information about the current request being intercepted.
-
pre_init
public void pre_init(ORBInitInfo info)
Description copied from interface:ORBInitializerOperations
Called during ORB initialization. If it is expected that initial services registered by an interceptor will be used by other interceptors, then those initial services shall be registered at this point via calls toORBInitInfo.register_initial_reference
.- Specified by:
pre_init
in interfaceORBInitializerOperations
- Parameters:
info
- provides initialization attributes and operations by which Interceptors can be registered.
-
post_init
public void post_init(ORBInitInfo info)
Description copied from interface:ORBInitializerOperations
Called during ORB initialization. If a service must resolve initial references as part of its initialization, it can assume that all initial references will be available at this point.Calling the
post_init
operations is not the final task of ORB initialization. The final task, following thepost_init
calls, is attaching the lists of registered interceptors to the ORB. Therefore, the ORB does not contain the interceptors during calls topost_init
. If an ORB-mediated call is made from withinpost_init
, no request interceptors will be invoked on that call. Likewise, if an operation is performed which causes an IOR to be created, no IOR interceptors will be invoked.- Specified by:
post_init
in interfaceORBInitializerOperations
- Parameters:
info
- provides initialization attributes and operations by which Interceptors can be registered.
-
-