public static interface ServerEndpoint.ListenEndpoint
A ListenEndpoint instance contains the
 information necessary to listen for requests on the
 communication endpoint.  For example, a TCP-based
 ListenEndpoint implementation typically contains
 the TCP port to listen on.  An implementation that supports
 authentication typically contains the Subject (if any)
 to use for server authentication.
 
The listen method can be used to start a
 listen operation on the communication endpoint that it
 represents, during which requests received on the endpoint will
 be dispatched to a supplied RequestDispatcher.
 
ListenEndpoint instances make up the discrete
 communication endpoints represented by a
 ServerEndpoint, and they are passed to a ListenContext as part of a ServerEndpoint.enumerateListenEndpoints invocation.
 
An instance of this interface should implement Object.equals to return true if and
 only if the argument is equivalent to the instance in trust,
 content, and function.  The equals method should
 not invoke comparison methods (such as equals) on
 any pluggable component without first verifying that the
 component's implementation is at least as trusted as the
 implementation of the corresponding component in the
 equals argument (such as by verifying that the
 corresponding component objects have the same actual class).
 If any such verification fails, the equals method
 should return false without invoking a comparison
 method on the component.  Furthermore, these guidelines should
 be recursively obeyed by the comparison methods of each such
 component for its subcomponents.  To avoid opening a security
 hole, implementations should only compare object identity
 (==) of Subject instances, rather
 than comparing their contents.
 
The equivalence relation of a ListenEndpoint
 should not be a function of any state in an associated
 ServerEndpoint that only applies to the
 ServerEndpoint's template for producing
 Endpoint instances.
| Modifier and Type | Method and Description | 
|---|---|
void | 
checkPermissions()
Verifies that the current security context has all of the
 security permissions necessary to listen for requests on
 this  
ListenEndpoint. | 
ServerEndpoint.ListenHandle | 
listen(RequestDispatcher requestDispatcher)
Listens for requests received on the communication endpoint
 represented by this  
ListenEndpoint,
 dispatching them to the supplied
 RequestDispatcher in the form of InboundRequest instances. | 
void checkPermissions()
ListenEndpoint.
 This method should be used when an invocation of
 ListenEndpoint.listen is used to receive
 requests for a variety of interested parties, each with
 potentially different security permissions possibly more
 limited than those granted to the code managing the shared
 endpoint, so that the managing code can enforce proper
 access control for each party.
SecurityException - if the current security context
 does not have the permissions necessary to listen for
 requests on this ListenEndpointInboundRequest.checkPermissions()ServerEndpoint.ListenHandle listen(RequestDispatcher requestDispatcher) throws IOException
ListenEndpoint,
 dispatching them to the supplied
 RequestDispatcher in the form of InboundRequest instances.
 This method starts a continuing listen operation
 and then immediately returns a ListenHandle
 that represents the listen operation that was started.  For
 the duration of the listen operation, all requests received
 on the communication endpoint will be dispatched to the
 supplied RequestDispatcher as
 InboundRequest instances.  The returned
 ListenHandle can be used to stop the listen
 operation and to obtain a ListenCookie to identify the
 listen operation as the return value of the ListenContext.addListenEndpoint method.
 
Typically, this method is invoked by a
 ListenContext implementation when its
 addListenEndpoint method is called as part of
 the execution of a
 ServerEndpoint.enumerateListenEndpoints
 invocation.  The Endpoint instance that can be
 used to send requests to the communication endpoints
 represented by the ServerEndpoint (including
 this ListenEndpoint) is produced by the
 ServerEndpoint implementation given, in part,
 the ListenCookie obtained from the
 ListenHandle returned by this method.
 
This method verifies that the current security context
 has all of the security permissions necessary to listen for
 requests on this ListenEndpoint, as
 appropriate to the implementation of this interface (see
 checkPermissions()).  Note that in addition to this
 security check, the implementation of this interface may
 also perform a further security check per request received
 (when the origin of a given request is known), to verify
 that the same security context also has all of the
 permissions necessary to receive requests from that
 particular origin (see InboundRequest.checkPermissions()).  This interface does not
 provide an API for determining when such a security check
 has failed; the behavior will be as if the associated
 request never occurred.
 
Implementations of this method should provide robust
 behavior (such as continuing to listen for requests) in the
 event that the supplied RequestDispatcher's
 dispatch method throws an unchecked exception.
 
Requests may be dispatched in separate threads as
 necessary for requests received on this
 ListenEndpoint while others are still being
 processed by earlier dispatch invocations.
 The implementation of this interface must assume that there
 may be arbitrary execution dependencies between the
 processing of such concurrently received requests, and thus
 it must not attempt any particular serialization of their
 processing; therefore, a request received must be either
 dispatched or rejected within a reasonable period of time,
 rather than be queued indefinitely waiting for the return
 of earlier dispatch invocations.
 
Implementations of this method should generally dispatch a request in a daemon thread with a security context at least as restrictive as the one in which this method was invoked, and without holding visible synchronization locks.
requestDispatcher - the RequestDispatcher
 to use to dispatch incoming requests received on this
 communication endpointListenHandle that represents the
 listen operation that was startedIOException - if an I/O exception occurs while
 attempting to listen for requests on this
 ListenEndpoint.  This could occur, for
 example, if an I/O resource associated with this
 communication endpoint is already in exclusive use, or if
 there are insufficient I/O resources for the operation.SecurityException - if the current security context
 does not have the permissions necessary to listen for
 requests on this ListenEndpointNullPointerException - if
 requestDispatcher is null