summaryrefslogtreecommitdiffstats
path: root/src/org/apache/http/impl/conn/tsccm/package.html
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/http/impl/conn/tsccm/package.html')
-rw-r--r--src/org/apache/http/impl/conn/tsccm/package.html205
1 files changed, 0 insertions, 205 deletions
diff --git a/src/org/apache/http/impl/conn/tsccm/package.html b/src/org/apache/http/impl/conn/tsccm/package.html
deleted file mode 100644
index 5aca5d4..0000000
--- a/src/org/apache/http/impl/conn/tsccm/package.html
+++ /dev/null
@@ -1,205 +0,0 @@
-<html>
-<head>
-<!--
-/*
- * $HeadURL: http://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk/module-client/src/main/java/org/apache/http/impl/conn/tsccm/package.html $
- * $Revision: 653041 $
- * $Date: 2008-05-03 03:39:28 -0700 (Sat, 03 May 2008) $
- *
- * ====================================================================
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- */
--->
-</head>
-<body>
-
-The implementation of a thread-safe client connection manager.
-
-<center>
-<img src="doc-files/tsccm-structure.png" alt="Relation Diagram"/>
-</center>
-
-<p>
-The implementation is structured into three areas, as illustrated
-by the diagram above.
-Facing the application is the <i>Manager</i> (green), which internally
-maintains a <i>Pool</i> (yellow) of connections and waiting threads.
-Both Manager and Pool rely on <i>Operations</i> (cyan) to provide the
-actual connections.
-</p>
-<p>
-In order to allow connection garbage collection, it is
-imperative that hard object references between the areas are
-restricted to the relations indicated by arrows in the diagram:
-</p>
-<ul>
-<li>Applications reference only the Manager objects.</li>
-<li>Manager objects reference Pool objects, but not vice versa.</li>
-<li>Operations objects do not reference either Manager or Pool objects.</li>
-</ul>
-
-<p>
-The following table shows a selection of classes and interfaces,
-and their assignment to the three areas.
-</p>
-<center>
-<table border="1">
-<colgroup>
- <col width="50%"/>
- <col width="50%"/>
-</colgroup>
-
-<tr>
-<td style="text-align: center; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager}
-</td>
-<td style="text-align: center; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.AbstractConnPool}
-</td>
-</tr>
-
-<tr>
-<td style="text-align: center; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPooledConnAdapter}
-</td>
-<td style="text-align: center; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.ConnPoolByRoute}
-</td>
-</tr>
-
-<!-- appears on both sides! -->
-
-<tr>
-<td style="text-align: right; background-color: #00ff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-</td>
-<td style="text-align: left; background-color: #ffff00;">
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-</td>
-</tr>
-
-<!-- ====================== -->
-
-<tr style="border-width: 5px;">
-</tr>
-
-<tr>
-<td colspan="2" style="text-align: center; background-color: #00ffff;">
-{@link org.apache.http.conn.ClientConnectionOperator}
-</td>
-</tr>
-
-<tr>
-<td colspan="2" style="text-align: center; background-color: #00ffff;">
-{@link org.apache.http.conn.OperatedClientConnection}
-</td>
-</tr>
-
-</table>
-</center>
-
-<p>
-The Manager area has implementations for the connection management
-interfaces {@link org.apache.http.conn.ClientConnectionManager}
-and {@link org.apache.http.conn.ManagedClientConnection}.
-The latter is an adapter from managed to operated connections, based on a
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}.
-<br/>
-The Pool area shows an abstract pool class
-{@link org.apache.http.impl.conn.tsccm.AbstractConnPool}
-and a concrete implementation
-{@link org.apache.http.impl.conn.tsccm.ConnPoolByRoute}
-which uses the same basic algorithm as the
-<code>MultiThreadedHttpConnectionManager</code>
-in HttpClient 3.x.
-A pool contains instances of
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}.
-Most other classes in this package also belong to the Pool area.
-<br/>
-In the Operations area, you will find only the interfaces for
-operated connections as defined in the org.apache.http.conn package.
-The connection manager will work with all correct implementations
-of these interfaces. This package therefore does not define anything
-specific to the Operations area.
-</p>
-
-<p>
-As you have surely noticed, the
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntry}
-appears in both the Manager and Pool areas.
-This is where things get tricky for connection garbage collection.
-<br/>
-A connection pool may start a background thread to implement cleanup.
-In that case, the connection pool will not be garbage collected until
-it is shut down, since the background thread keeps a hard reference
-to the pool. The pool itself keeps hard references to the pooled entries,
-which in turn reference idle connections. Neither of these is subject
-to garbage collection.
-Only the shutdown of the pool will stop the background thread,
-thereby enabling garbage collection of the pool objects.
-<br/>
-A pool entry that is passed to an application by means of a connection
-adapter will move from the Pool area to the Manager area. When the
-connection is released by the application, the manager returns the
-entry back to the pool. With that step, the pool entry moves from
-the Manager area back to the Pool area.
-While the entry is in the Manager area, the pool MUST NOT keep a
-hard reference to it.
-</p>
-
-<p>
-The purpose of connection garbage collection is to detect when an
-application fails to return a connection. In order to achieve this,
-the only hard reference to the pool entry in the Manager area is
-in the connection wrapper. The manager will not keep a hard reference
-to the connection wrapper either, since that wrapper is effectively
-moving to the Application area.
-If the application drops it's reference to the connection wrapper,
-that wrapper will be garbage collected, and with it the pool entry.
-<br/>
-In order to detect garbage collection of pool entries handed out
-to the application, the pool keeps a <i>weak reference</i> to the
-entry. Instances of
-{@link org.apache.http.impl.conn.tsccm.BasicPoolEntryRef}
-combine the weak reference with information about the route for
-which the pool entry was allocated. If one of these entry references
-becomes stale, the pool can accommodate for the lost connection.
-This is triggered either by a background thread waiting for the
-references to be queued by the garbage collector, or by the
-application calling a {@link
- org.apache.http.conn.ClientConnectionManager#closeIdleConnections cleanup}
-method of the connection manager.
-<br/>
-Basically the same trick is used for detecting garbage collection
-of the connection manager itself. The pool keeps a weak reference
-to the connection manager that created it. However, this will work
-only if there is a background thread to detect when that reference
-is queued by the garbage collector. Otherwise, a finalizer of the
-connection manager will shut down the pool and release it's resources.
-</p>
-
-
-</body>
-</html>