package org.omg.PortableInterceptor; /** * org/omg/PortableInterceptor/ServerRequestInterceptorOperations.java . * Generated by the IDL-to-Java compiler (portable), version "3.2" * from ../../../../src/share/classes/org/omg/PortableInterceptor/Interceptors.idl * Friday, May 25, 2007 3:39:56 o'clock PM GMT-05:00 */ /** * Server-side request interceptor. * <p> * A request Interceptor is designed to intercept the flow of a * request/reply sequence through the ORB at specific points so that * services can query the request information and manipulate the service * contexts which are propagated between clients and servers. The primary * use of request Interceptors is to enable ORB services to transfer * context information between clients and servers. There are two types * of request Interceptors: client-side and server-side. * <p> * To write a server-side Interceptor, implement the * ServerRequestInterceptor interface. * * @see ServerRequestInfo */ public interface ServerRequestInterceptorOperations extends org.omg.PortableInterceptor.InterceptorOperations { /** * Allows the interceptor to process service context information. * <p> * At this interception point, Interceptors must get their service * context information from the incoming request transfer it to * <code>PortableInterceptor.Current</code>'s slots. * <p> * 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. * <p> * This interception point may throw a system exception. If it does, * no other Interceptors' <code>receive_request_service_contexts</code> * operations are called. Those Interceptors on the Flow Stack are * popped and their <code>send_exception</code> interception points are * called. * <p> * This interception point may also throw a <code>ForwardRequest</code> * exception. If an Interceptor throws this exception, no other * Interceptors' <code>receive_request_service_contexts</code> operations * are called. Those Interceptors on the Flow Stack are popped and * their <code>send_other</code> interception points are called. * <p> * Compliant Interceptors shall properly follow * <code>completion_status</code> semantics if they throw a system * exception from this interception point. The * <code>completion_status</code> shall be COMPLETED_NO. * * @param ri Information about the current request being intercepted. * @exception ForwardRequest If thrown, indicates to the ORB that a * retry of the request should occur with the new object given in * the exception. */ void receive_request_service_contexts (org.omg.PortableInterceptor.ServerRequestInfo ri) throws org.omg.PortableInterceptor.ForwardRequest; /** * 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. * <p> * In the DSI model, since the parameters are first available when * the user code calls <code>arguments</code>, <code>receive_request</code> * is called from within <code>arguments</code>. It is possible that * <code>arguments</code> is not called in the DSI model. The target * may call <code>set_exception</code> before calling * <code>arguments</code>. The ORB shall guarantee that * <code>receive_request</code> is called once, either through * <code>arguments</code> or through <code>set_exception</code>. If it * is called through <code>set_exception</code>, requesting the * arguments will result in <code>NO_RESOURCES</code> being thrown with * a standard minor code of 1. * <p> * This interception point may throw a system exception. If it does, no * other Interceptors' <code>receive_request</code> operations are * called. Those Interceptors on the Flow Stack are popped and their * <code>send_exception</code> interception points are called. * <p> * This interception point may also throw a <code>ForwardRequest</code> * exception. If an Interceptor throws this exception, no other * Interceptors' <code>receive_request</code> operations are called. * Those Interceptors on the Flow Stack are popped and their * <code>send_other</code> interception points are called. * <p> * Compliant Interceptors shall properly follow * <code>completion_status</code> semantics if they throw a system * exception from this interception point. The * <code>completion_status</code> shall be <code>COMPLETED_NO</code>. * * @param ri Information about the current request being intercepted. * @exception ForwardRequest If thrown, indicates to the ORB that a * retry of the request should occur with the new object given in * the exception. */ void receive_request (org.omg.PortableInterceptor.ServerRequestInfo ri) throws org.omg.PortableInterceptor.ForwardRequest; /** * 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. * <p> * This interception point may throw a system exception. If it does, * no other Interceptors' <code>send_reply</code> operations are called. * The remaining Interceptors in the Flow Stack shall have their * <code>send_exception</code> interception point called. * <p> * Compliant Interceptors shall properly follow * <code>completion_status</code> semantics if they throw a * system exception from this interception point. The * <code>completion_status</code> shall be <code>COMPLETED_YES</code>. * * @param ri Information about the current request being intercepted. */ void send_reply (org.omg.PortableInterceptor.ServerRequestInfo ri); /** * 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. * <p> * 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 * <code>send_exception</code>. 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. * <p> * This interception point may also throw a <code>ForwardRequest</code> * exception. If an Interceptor throws this exception, no other * Interceptors' <code>send_exception</code> operations are called. The * remaining Interceptors in the Flow Stack shall have their * <code>send_other</code> interception points called. * <p> * If the <code>completion_status</code> of the exception is not * <code>COMPLETED_NO</code>, then it is inappropriate for this * interception point to throw a <code>ForwardRequest</code> exception. * The request's at-most-once semantics would be lost. * <p> * Compliant Interceptors shall properly follow * <code>completion_status</code> semantics if they throw a system * exception from this interception point. If the original exception * is a system exception, the <code>completion_status</code> of the new * exception shall be the same as on the original. If the original * exception is a user exception, then the <code>completion_status</code> * of the new exception shall be <code>COMPLETED_YES</code>. * * @param ri Information about the current request being intercepted. * @exception ForwardRequest If thrown, indicates to the ORB that a * retry of the request should occur with the new object given in * the exception. */ void send_exception (org.omg.PortableInterceptor.ServerRequestInfo ri) throws org.omg.PortableInterceptor.ForwardRequest; /** * 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 a <code>LOCATION_FORWARD</code> status was * received). This interception point shall execute in the same thread * as the target invocation. * <p> * This interception point may throw a system exception. If it does, * no other Interceptors' <code>send_other</code> operations are called. * The remaining Interceptors in the Flow Stack shall have their * <code>send_exception</code> interception points called. * <p> * This interception point may also throw a <code>ForwardRequest</code> * exception. If an Interceptor throws this exception, successive * Interceptors' <code>send_other</code> operations are called with * the new information provided by the <code>ForwardRequest</code> * exception. * <p> * Compliant Interceptors shall properly follow * <code>completion_status</code> semantics if they throw a system * exception from this interception point. The * <code>completion_status</code> shall be <code>COMPLETED_NO</code>. * * @param ri Information about the current request being intercepted. * @exception ForwardRequest If thrown, indicates to the ORB that a * retry of the request should occur with the new object given in * the exception. */ void send_other (org.omg.PortableInterceptor.ServerRequestInfo ri) throws org.omg.PortableInterceptor.ForwardRequest; } // interface ServerRequestInterceptorOperations