|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectnet.jini.jeri.http.HttpServerEndpoint
An implementation of the ServerEndpoint abstraction that
uses HTTP messages sent over TCP sockets (instances of ServerSocket) for the underlying communication mechanism.
HttpServerEndpoint instances contain a host name
and a TCP port number, as well as an optional ServerSocketFactory for customizing the type of
ServerSocket to use and an optional SocketFactory for customizing the type of Socket that
client endpoints will use. The port number is the local TCP port
to bind to when listening for incoming socket connections. If the
port number is zero, then each listen operation will bind to a free
(non-zero) port, which will be the port number contained in the
resulting HttpEndpoint. The host name contained in an
HttpServerEndpoint controls the host name that will be
contained in the HttpEndpoint instances produced when
enumerateListenEndpoints is
invoked to listen on the HttpServerEndpoint (this host
name does not affect the behavior of listen operations themselves).
If the host name in an HttpServerEndpoint is
null, then the host name in the
HttpEndpoint instances that it produces will be the IP
address string obtained from InetAddress.getLocalHost when enumerateListenEndpoints is invoked.
HttpServerEndpoint instances map incoming HTTP
messages to requests; when possible, underlying TCP connections are
persisted to accommodate multiple non-overlapping incoming
requests. Inbound request data is received as the
entity-body of an HTTP POST request; outbound response
data is sent as the entity-body of the corresponding
HTTP return message. For information on HTTP, refer to RFC 2616. Note that
providing socket factories that produce SSL sockets does not result
in endpoints that are fully HTTPS capable.
A ServerSocketFactory used with an
HttpServerEndpoint must implement Object.equals to obey the guidelines that are specified for
equals methods of ListenEndpoint
instances. A SocketFactory used with a
HttpServerEndpoint should be serializable and must
implement Object.equals to obey the guidelines that
are specified for equals methods of Endpoint
instances.
HttpEndpoint| Nested Class Summary |
| Nested classes inherited from class net.jini.jeri.ServerEndpoint |
ServerEndpoint.ListenContext, ServerEndpoint.ListenCookie, ServerEndpoint.ListenEndpoint, ServerEndpoint.ListenHandle |
| Method Summary | |
InvocationConstraints |
checkConstraints(InvocationConstraints constraints)
Verifies that this instance supports the transport layer aspects of all of the specified requirements (both in general and in the current security context), and returns the requirements that must be at least partially implemented by higher layers in order to fully satisfy all of the specified requirements. This method may also return preferences that must be at least partially implemented by higher layers in order to fully satisfy some of the specified preferences. For any given constraint, there must be a clear delineation
of which aspects (if any) must be implemented by the transport
layer. This method must not return a constraint (as a
requirement or a preference, directly or as an element of
another constraint) unless this instance can implement all of
those aspects. Also, this method must not return a constraint
for which all aspects must be implemented by the transport
layer. Most of the constraints in the For any The constraints passed to this method may include constraints based on relative time. |
Endpoint |
enumerateListenEndpoints(ServerEndpoint.ListenContext listenContext)
Passes the ListenEndpoint for this HttpServerEndpoint to
listenContext, which will ensure an active listen
operation on the endpoint, and returns an
HttpEndpoint instance corresponding to the listen
operation chosen by listenContext.
|
boolean |
equals(Object obj)
Compares the specified object with this HttpServerEndpoint for equality.
|
String |
getHost()
Returns the host name that will be used in HttpEndpoint instances produced by listening on
this HttpServerEndpoint, or null if
the IP address string obtained from InetAddress.getLocalHost will be
used. |
static HttpServerEndpoint |
getInstance(int port)
Returns an HttpServerEndpoint instance for the
given TCP port number.
|
static HttpServerEndpoint |
getInstance(String host,
int port)
Returns an HttpServerEndpoint instance for the given
host name and TCP port number.
|
static HttpServerEndpoint |
getInstance(String host,
int port,
SocketFactory sf,
ServerSocketFactory ssf)
Returns an HttpServerEndpoint instance for the
given host name and TCP port number that contains the given
SocketFactory and
ServerSocketFactory.
|
int |
getPort()
Returns the TCP port that this HttpServerEndpoint
listens on. |
ServerSocketFactory |
getServerSocketFactory()
Returns the ServerSocketFactory that this endpoint
uses to create ServerSocket objects. |
SocketFactory |
getSocketFactory()
Returns the SocketFactory that
HttpEndpoint objects produced by listening on this
HttpServerEndpoint will use to create
Socket objects. |
int |
hashCode()
Returns the hash code value for this HttpServerEndpoint. |
String |
toString()
Returns a string representation of this HttpServerEndpoint. |
| Methods inherited from class java.lang.Object |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Method Detail |
public static HttpServerEndpoint getInstance(int port)
HttpServerEndpoint instance for the
given TCP port number.
The host name contained in the returned
HttpServerEndpoint will be null, so
that when its enumerateListenEndpoints method produces an HttpEndpoint, the HttpEndpoint's host name will
be the IP address string obtained from InetAddress.getLocalHost.
The ServerSocketFactory contained in the
returned HttpServerEndpoint will be
null, indicating that this endpoint will create
ServerSocket objects directly. The
SocketFactory contained in the returned
HttpServerEndpoint will also be null.
port - the TCP port on the local host to listen on
HttpServerEndpoint instance
IllegalArgumentException - if the port number is out of
the range 0 to 65535 (inclusive)
public static HttpServerEndpoint getInstance(String host,
int port)
HttpServerEndpoint instance for the given
host name and TCP port number.
If host is null, then when the
returned HttpServerEndpoint's enumerateListenEndpoints method
produces an HttpEndpoint, the
HttpEndpoint's host name will be the IP address
string obtained from InetAddress.getLocalHost.
The ServerSocketFactory contained in the
returned HttpServerEndpoint will be
null, indicating that this endpoint will create
ServerSocket objects directly. The
SocketFactory contained in the returned
HttpServerEndpoint will also be null.
host - the host name to be used in
HttpEndpoint instances produced by listening on
the returned HttpServerEndpoint, or
nullport - the TCP port on the local host to listen on
HttpServerEndpoint instance
IllegalArgumentException - if the port number is out of
the range 0 to 65535 (inclusive)
public static HttpServerEndpoint getInstance(String host,
int port,
SocketFactory sf,
ServerSocketFactory ssf)
HttpServerEndpoint instance for the
given host name and TCP port number that contains the given
SocketFactory and
ServerSocketFactory.
If host is null, then when the
returned HttpServerEndpoint's enumerateListenEndpoints method
produces an HttpEndpoint, the
HttpEndpoint's host name will be the IP address
string obtained from InetAddress.getLocalHost.
If the server socket factory argument is null,
then this endpoint will create ServerSocket
objects directly.
host - the host name to be used in
HttpEndpoint instances produced by listening on
the returned HttpServerEndpoint, or
nullport - the TCP port on the local host to listen onsf - the SocketFactory to use for this
HttpServerEndpoint, or nullssf - the ServerSocketFactory to use for this
HttpServerEndpoint, or null
HttpServerEndpoint instance
IllegalArgumentException - if the port number is out of
the range 0 to 65535 (inclusive)public String getHost()
HttpEndpoint instances produced by listening on
this HttpServerEndpoint, or null if
the IP address string obtained from InetAddress.getLocalHost will be
used.
HttpEndpoint
instances produced from this object, or nullpublic int getPort()
HttpServerEndpoint
listens on.
public SocketFactory getSocketFactory()
SocketFactory that
HttpEndpoint objects produced by listening on this
HttpServerEndpoint will use to create
Socket objects.
null if no factory will be usedpublic ServerSocketFactory getServerSocketFactory()
ServerSocketFactory that this endpoint
uses to create ServerSocket objects.
null if no factory is used
public InvocationConstraints checkConstraints(InvocationConstraints constraints)
throws UnsupportedConstraintException
For any given constraint, there must be a clear delineation
of which aspects (if any) must be implemented by the transport
layer. This method must not return a constraint (as a
requirement or a preference, directly or as an element of
another constraint) unless this instance can implement all of
those aspects. Also, this method must not return a constraint
for which all aspects must be implemented by the transport
layer. Most of the constraints in the net.jini.core.constraint package must be fully implemented by
the transport layer and thus must not be returned by this
method; the one exception is Integrity, for which the
transport layer is responsible for the data integrity aspect
and higher layers are responsible for the code integrity
aspect.
For any ConstraintAlternatives in the specified
constraints, this method should only return a corresponding
constraint if all of the alternatives supported by this
instance need to be at least partially implemented by higher
layers in order to be fully satisfied.
The constraints passed to this method may include constraints based on relative time.
checkConstraints in interface ServerCapabilitiesconstraints - the constraints that must be supported
NullPointerException - if constraints is
null
UnsupportedConstraintException - if the transport layer
aspects of any of the specified requirements are not supported
by this instance (either in general or in the current security
context)
public Endpoint enumerateListenEndpoints(ServerEndpoint.ListenContext listenContext)
throws IOException
ListenEndpoint for this HttpServerEndpoint to
listenContext, which will ensure an active listen
operation on the endpoint, and returns an
HttpEndpoint instance corresponding to the listen
operation chosen by listenContext.
If this HttpServerEndpoint's host name is not
null, then the returned HttpEndpoint
will contain that host name. If this
HttpServerEndpoint's host name is
null, then this method invokes InetAddress.getLocalHost to obtain an
InetAddress for the local host. If
InetAddress.getLocalHost throws an UnknownHostException, this method throws an
UnknownHostException. The returned
HttpEndpoint's host name will be the string
returned by invoking getHostAddress on that InetAddress. If there is
a security manager, its checkConnect method
will be invoked with the string returned by invoking getHostName on that same
InetAddress as the host argument and
-1 as the port argument; this could result in a
SecurityException.
This method invokes addListenEndpoint on
listenContext once, passing a
ListenEndpoint as described below. If
addListenEndpoint throws an exception, then this
method throws that exception. Otherwise, this method returns
an HttpEndpoint instance with the host name
described above, the TCP port number bound by the listen
operation represented by the ListenHandle
returned by addListenEndpoint, and the same
SocketFactory as this
HttpServerEndpoint.
The ListenEndpoint passed to
addListenEndpoint represents the TCP port number
and ServerSocketFactory of this
HttpServerEndpoint. Its methods behave as
follows:
ListenHandle listen(RequestDispatcher):
Listens for requests received on this endpoint's TCP port, dispatching them to the suppliedRequestDispatcherin the form ofInboundRequestinstances.When the implementation of this method needs to create a new
ServerSocket, it will do so by invoking one of thecreateServerSocketmethods that returns a bound server socket on the containedServerSocketFactoryif non-null, or it will create aServerSocketdirectly otherwise.If there is a security manager, its
checkListenmethod will be invoked with this endpoint's TCP port; this could result in aSecurityException. Furthermore, before a givenInboundRequestgets dispatched to the supplied request dispatcher, the security manager'scheckAcceptmethod must have been successfully invoked in the security context of thislisteninvocation with the remote IP address and port of theSocketused to receive the request. ThecheckPermissionsmethod of the dispatchedInboundRequestalso performs this latter security check. (Note that in some cases, the implementation may carry out these security checks indirectly, such as through invocations ofServerSocket's constructors oracceptmethod.)Requests will be dispatched in a
PrivilegedActionwrapped by aSecurityContextobtained when this method was invoked, with theAccessControlContextof thatSecurityContextin effect.Dispatched requests will implement
populateContextto populate the supplied collection with context information representing the request.Throws
IOExceptionif an I/O exception occurs while performing this operation, such as if the TCP port is already in use.Throws
SecurityExceptionif there is a security manager and the invocation of itscheckListenmethod fails.Throws
NullPointerExceptionifrequestDispatcherisnull
Verifies that the calling context has all of the security permissions necessary to listen for requests on this endpoint.If there is a security manager, its
checkListenmethod will be invoked with this endpoint's TCP port; this could result in aSecurityException.Throws
SecurityExceptionif there is a security manager and the invocation of itscheckListenmethod fails.
Compares the specified object with thisListenEndpointfor equality.This method returns
trueif and only if
- the specified object is also a
ListenEndpointproduced by anHttpServerEndpoint,- the port in the specified object is equal to the port in this object, and
- either this object and the specified object both have no
ServerSocketFactoryor theServerSocketFactoryin the specified object has the same class and is equal to the one in this object.
enumerateListenEndpoints in interface ServerEndpointlistenContext - the ListenContext to pass
this HttpServerEndpoint's
ListenEndpoint to
HttpEndpoint instance for sending
requests to this HttpServerEndpoint's endpoint
being listened on
UnknownHostException - if this
HttpServerEndpoint's host name is
null and InetAddress.getLocalHost
throws an UnknownHostException
IOException - if an I/O exception occurs while performing
this operation, such as if the TCP port is already in use
SecurityException - if there is a security manager and
either the invocation of its checkListen method
fails or this HttpServerEndpoint's host name is
null and the invocation of the security manager's
checkConnect method fails
IllegalArgumentException - if an invocation of the
addListenEndpoint method on the supplied
ListenContext returns a ListenCookie
that does not correspond to the ListenEndpoint
that was passed to it
NullPointerException - if listenContext is
nullpublic int hashCode()
HttpServerEndpoint.
HttpServerEndpointpublic boolean equals(Object obj)
HttpServerEndpoint for equality.
This method returns true if and only if
HttpServerEndpoint,
SocketFactory or the ServerFactory in
the specified object has the same class and is equal to the one
in this object, and
ServerSocketFactory or the
ServerSocketFactory in the specified object has
the same class and is equal to the one in this object.
obj - the object to compare with
true if obj is equivalent to
this object; false otherwisepublic String toString()
HttpServerEndpoint.
HttpServerEndpoint
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||