Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jakarta-httpclient 
Wiki" for change notification.

The following page has been changed by RolandWeber:
http://wiki.apache.org/jakarta-httpclient/ConnectionManagementDesign

The comment on the change is:
updated for HTTPCLIENT-649

------------------------------------------------------------------------------
  
  == Routes ==
  
+ The two most common type of routes have one or two hops, being either direct 
or through exactly one proxy.
+ However, there are cases when connections have to be established through a 
chain of proxies ([https://issues.apache.org/jira/browse/HTTPCLIENT-649 
HTTPCLIENT-649]).
- Route representation does not need to cover routes of arbitrary length. For 
practical purposes, there will be at most two hops: target and proxy. A 
modifiable route representation is useful for tracking. A non-modifiable route 
representation could be useful for lookup keys and return values. A 
sophisticated connection manager will probably need different lookup keys 
though. Options:
+ A modifiable route representation is useful for tracking. A non-modifiable 
route representation could be useful for lookup keys and return values. A 
sophisticated connection manager will probably need different lookup keys 
though. Options:
   * route interface plus both a modifiable and non-modifiable implementation, 
similar to {{{StringBuilder}}} and {{{String}}}
   * modifiable route representation only, similar to {{{HostConfiguration}}} 
in !HttpClient 3.x
  The target and proxy can be represented by {{{HttpHost}}} objects. This 
identifies schemes (HTTP, HTTPS) by their name. It does not cover cases where 
applications use different socket factories for the same scheme. That's not 
likely to be a problem.
  [[BR]]
- Route length (direct/proxied), tunnelling state and layered/plain can be 
represented by {{{boolean}}} values. Using {{{int}}} for the route length would 
allow for custom implementations of more complex routes (with the interface 
option), but the restriction to two hops will probably show up elsewhere too.
+ Route length (direct/proxied) for the two common cases, tunnelling state and 
layered/plain can be represented by {{{boolean}}} values. Using {{{int}}} for 
the route length would allow for custom implementations of more complex routes 
(with the interface option), but the restriction to two hops will probably show 
up elsewhere too.
  Multiple levels of layering are hypothetical and therefore not considered.
  [[BR]]
- Generic {{{Object}}} instances can be used to represent connection based 
authentication state. Two objects are required for proxy and target 
authentication. Comparison relies on the generic {{{equals}}} method. 
Applications can use whatever is considered appropriate to represent the 
authentication, for example:
+ Generic {{{Object}}} instances can be used to represent connection based 
authentication state. Two objects are required for proxy and target 
authentication, assuming at most one proxy. Comparison relies on the generic 
{{{equals}}} method. Applications can use whatever is considered appropriate to 
represent the authentication, for example:
   * {{{CredentialsProvider}}} for NTLM authentication. If a route is requested 
with the same {{{CredentialsProvider}}}, the same credentials would be 
available and so the authentication state can be re-used.
   * {{{SSLSocketFactory}}} for TLS/SSL with client authentication. The socket 
factory uses a unique key store, so the same credentials would be available and 
the authentication state can be re-used.
   * A key store for TLS/SSL with client authentication. This is a variation of 
the {{{SSLSocketFactory}}} option.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to