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:
responsibility for establishing a route

------------------------------------------------------------------------------
  == Connection Management ==
  
  Connections should be requested from a connection manager with a 
specification of the intended route. The connection manager returns a 
connection which is either closed, matches the route exactly, or is a prefix of 
the route. We need representations for the intended route and for the actual 
route of the returned connection. Connection managers can compute internal keys 
for connection lookup based on the routes.
+ [[BR]]
+ A connection manager can not establish all routes automatically. Opening a 
plain socket or TLS/SSL socket could be implemented there, but tunnelling 
requires HTTP communication and possibly HTTP authentication. This is out of 
scope for a connection manager. Since routes can not always be established by 
the connection manager, that responsibility should reside elsewhere completely, 
rather than being split between the connection manager and an outside 
component. 
  
- Routes are established outside of the connection manager. When the connection 
is released, the connection manager needs to know which route has actually been 
established. The connection may be closed, the full route may have been 
established, or a prefix thereof. Of course there might also be misbehaving 
applications that establish a route different from the one for which the 
connection was allocated.
+ When a connection is released, the connection manager needs to know which 
route has actually been established. The connection may be closed, the full 
route may have been established, or a prefix thereof. Since routes are 
established outside of the connection manager, there might also be misbehaving 
applications that establish a route different from the one for which the 
connection was allocated.
  [[BR]]
- Tracking of the steps can be done by the application, by the connection, or 
by the connection manager. Tracking by the application opens a gaping hole for 
connection management problems that are very hard to analyse and debug. 
Tracking by the connection or connection manager is functionally equivalent. 
The connection could call back to it's connection manager, and the connection 
manager would require the connection as an argument. This kind of tracking 
requires a set of methods that correspond to the steps in establishing a route:
+ Tracking of the steps can be done by the application, by the connection, or 
by the connection manager. Tracking by the application opens a gaping hole for 
connection management problems that are very hard to analyse and debug. 
Tracking by the connection or by the connection manager is functionally 
equivalent. The connection could call back to it's connection manager, and the 
connection manager would require the connection as an argument. This kind of 
tracking requires a set of methods that correspond to the steps in establishing 
a route:
   * open connection to target/proxy
   * tunnel connection to target
-  * layer secure connection over tunnel
+  * layer (secure) connection over tunnel
   * authenticate against target/proxy (connection based authentication only)
  Optionally, establishing of a route different from the intended one could be 
prevented by the connection or connection manager.
  

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

Reply via email to