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 {@link net.jini.jeri.ssl} security provider.
HttpEndpoint
and HttpServerEndpoint
map
{@link net.jini.jeri.OutboundRequest} and
{@link net.jini.jeri.InboundRequest} instances to HTTP
request/response messages: request data is transmitted as the
entity-body
of an HTTP POST request, while response data is
transmitted as the entity-body
of 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.
HttpEndpoint
consults the same set of system properties used by
{@link java.net.HttpURLConnection}:
http.proxyHost
: if specified, the value of this property is
interpreted as the host name of the HTTP proxy to use. If
http.proxyHost
is not specified, then the proxyHost
system 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 HttpEndpoint
).
http.proxyPort
: if http.proxyHost
or
proxyHost
is set, then the (integer) value of
http.proxyPort
system property is used as the port number on
which to connect to the HTTP proxy; if unspecified, then the
proxyPort
property is consulted as a fallback. If neither
http.proxyPort
nor proxyPort
is specified (but
http.proxyHost
or proxyHost
is), 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.nonProxyHosts
is 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.
HttpEndpoint
supports both basic and digest HTTP authentication
methods, specified in RFC
2617. Like HttpURLConnection
, it obtains authentication
parameters (e.g., username, password) from the {@link java.net.Authenticator}
class.
HttpEndpoint
and HttpServerEndpoint
support
the transport layer aspects of at least the following constraints:
ClientMaxPrincipal
,
ClientMaxPrincipalType
, ClientMinPrincipal
,
ClientMinPrincipalType
, ServerMinPrincipal
,
DelegationAbsoluteTime
, and
DelegationRelativeTime
constraints are trivially
supported if ClientAuthentication.YES
,
ServerAuthentication.YES
, and Delegation.YES
are not supported.)
@since 2.0
@version 2.0
@com.sun.jini.impl
net.jini.jeri.http.client
to log information at the
following levels:
Level | Description |
---|---|
{@link com.sun.jini.logging.Levels#FAILED FAILED} | exceptions thrown attempting to initiate a request |
{@link com.sun.jini.logging.Levels#HANDLED HANDLED} | exceptions caught attempting to connect a socket, set options on a client-side socket, or reuse a connection |
{@link java.util.logging.Level#FINE FINE} | client-side socket operations (create, connect, reuse, and close) |
This implementation uses the {@link java.util.logging.Logger} named
net.jini.jeri.http.server
to log information at the
following levels:
Level | Description |
---|---|
{@link java.util.logging.Level#WARNING WARNING} | exceptions accepting on a server socket |
{@link com.sun.jini.logging.Levels#HANDLED HANDLED} | exceptions caught setting options on a server-side socket |
{@link java.util.logging.Level#FINE FINE} | server-side socket operations (create, accept, and close) |
HttpEndpoint
and HttpServerEndpoint
recognizes the following system properties:
com.sun.jini.jeri.http.idleConnectionTimeout
- The number of
milliseconds to retain idle client-side HTTP connections before closing
them. The default is 15000
.
com.sun.jini.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 com.sun.jini.jeri.http.idleConnectionTimeout
system property) plus 10000
.
com.sun.jini.jeri.http.responseAckTimeout
- The number of
milliseconds to wait for acknowledgments from
{@link net.jini.io.context.AcknowledgmentSource} instances. The default is
15000
.
com.sun.jini.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.
com.sun.jini.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.
com.sun.jini.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).