* @param evictionCheck eviction check interval, seconds.
*/
public static TransportConfiguration createLongTermConfiguration(
final ClientConnectionManager connectionManager, int idleTimeout,
int evictionCheck) {
final ConnectionEvictor evictor = new ConnectionEvictor(
connectionManager, evictionCheck, idleTimeout);
final Thread evictorThread = new Thread(evictor);
evictorThread.setDaemon(true);
evictorThread
.setName("Redmine communicator connection eviction thread");
evictorThread.start();
try {
return TransportConfiguration.create(
getNewHttpClient(connectionManager), new Runnable() {
@Override
public void run() {
try {
connectionManager.shutdown();
} finally {
evictor.shutdown();
}
}
});
} catch (RuntimeException t) {
/* A little paranoia, StackOferflow, OOM, other excetpions. */
evictor.shutdown();
throw t;
} catch (Error e) {
evictor.shutdown();
throw e;
}
}