ServerEndpointabstractions that use HTTP messages sent over TCP sockets as the underlying communication mechanism.
HttpEndpointinstances can be used by clients to initiate calls over HTTP; each instance contains the host name and TCP port number to which to connect, as well as an optional
SocketFactoryfor customizing the type of
HttpServerEndpointinstances are used to listen for and receive incoming calls over HTTP; each instance contains the name of the listening host and the number of the TCP port on which to listen, as well as an optional
ServerSocketFactoryfor customizing the type of
Note that providing socket factories which produce SSL sockets does
not result in endpoints which are fully HTTPS capable. HTTPS support
is offered by the
net.jini.jeri.ssl security provider.
InboundRequestinstances to HTTP request/response messages: request data is transmitted as the
entity-bodyof an HTTP POST request, while response data is transmitted as the
entity-bodyof the corresponding HTTP response message. When possible, HTTP 1.1 persistent connections and chunked transfer coding are employed. For information on HTTP, refer to RFC 2616.
HttpEndpointconsults the same set of system properties used by
http.proxyHost: if specified, the value of this property is interpreted as the host name of the HTTP proxy to use. If
http.proxyHostis not specified, then the
proxyHostsystem property is consulted as a fallback; if it is not specified either, then HTTP proxying is disabled (i.e., all HTTP messages are sent directly to the target host of the given
proxyHostis set, then the (integer) value of
http.proxyPortsystem property is used as the port number on which to connect to the HTTP proxy; if unspecified, then the
proxyPortproperty is consulted as a fallback. If neither
proxyPortis specified (but
proxyHostis), then the HTTP proxy port number defaults to 80.
http.nonProxyHosts: if specified, the value of this property is interpreted as a list of host name patterns, each delimited by the '|' character. Individual host name patterns may be literal host names/addresses, or partial host names/addresses containing the '*' character as a wildcard. The '*' wildcard matches arbitrary (including zero-length) spans of characters. If
http.nonProxyHostsis specified and the name of the target host for a given outbound message matches at least one of the patterns, then messages to that host will not be sent through the HTTP proxy.
HttpEndpointsupports both basic and digest HTTP authentication methods, specified in RFC 2617. Like
HttpURLConnection, it obtains authentication parameters (e.g., username, password) from the
HttpServerEndpointsupport the transport layer aspects of at least the following constraints:
ConstraintAlternativesif at least one element is supported
DelegationRelativeTimeconstraints are trivially supported if
Delegation.YESare not supported.)
net.jini.jeri.http.clientto log information at the following levels:
| ||exceptions thrown attempting to initiate a request|
| ||exceptions caught attempting to connect a socket, set options on a client-side socket, or reuse a connection|
| ||client-side socket operations (create, connect, reuse, and close)|
This implementation uses the
net.jini.jeri.http.server to log information at the
| ||exceptions accepting on a server socket|
| ||exceptions caught setting options on a server-side socket|
| ||server-side socket operations (create, accept, and close)|
HttpServerEndpointrecognizes the following system properties:
org.apache.river.jeri.http.idleConnectionTimeout- The number of milliseconds to retain idle client-side HTTP connections before closing them. The default is
org.apache.river.jeri.http.idleServerConnectionTimeout- The number of milliseconds to retain idle server-side HTTP connections before closing them. The default is the idle client-side connection timeout (as specified by the
org.apache.river.jeri.http.idleConnectionTimeoutsystem property) plus
org.apache.river.jeri.http.responseAckTimeout- The number of milliseconds to wait for acknowledgments from
AcknowledgmentSourceinstances. The default is
org.apache.river.jeri.http.disableProxyPersistentConnections- If the value is case-insensitive equal to
true, client-side connections through the HTTP proxy are not reused across requests; otherwise, persistent connections are maintained and reused if possible.
org.apache.river.jeri.http.pingProxyConnections- If the value is case-insensitive equal to
true, then if an HTTP proxy is being used, ping the server endpoint to verify whether it is alive and reachable. The ping occurs before the first request and before each subsequent request which follows the expiration of the ping proxy timeout period (below) following the previous ping. When using an HTTP proxy it is often impossible to distinguish between inability to reach the server endpoint (such as because the server process refused a connection by the HTTP proxy) and the lack of response from a delivered request (which might result in an UnmarshalException). The ping increases the likelihood that the inability to reach the server endpoint can be explicitly identified. The default value is
false, and no pings are done.
org.apache.river.jeri.http.pingProxyConnectionTimeout- The number of milliseconds from the time a server endpoint was last pinged before a ping will precede the next request. The default is
Long.MAX_VALUE(essentially meaning, ping only before the first request).
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.