1 /* 2 * This file is part of *** M y C o R e *** 3 * See http://www.mycore.de/ for details. 4 * 5 * MyCoRe is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * MyCoRe is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with MyCoRe. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 package org.mycore.services.http; 20 21 import java.util.concurrent.TimeUnit; 22 23 import org.apache.http.conn.HttpClientConnectionManager; 24 25 /** 26 * Monitors a {@link HttpClientConnectionManager} for expired or idle connections. 27 * 28 * These connections will be closed every 5 seconds. 29 * @author Thomas Scheffler (yagee) 30 */ 31 public class MCRIdleConnectionMonitorThread extends Thread { 32 private final HttpClientConnectionManager connMgr; 33 34 private volatile boolean shutdown; 35 36 public MCRIdleConnectionMonitorThread(HttpClientConnectionManager connMgr) { 37 super(); 38 this.connMgr = connMgr; 39 } 40 41 @Override 42 public void run() { 43 try { 44 while (!shutdown) { 45 synchronized (this) { 46 wait(5000); 47 // Close expired connections 48 connMgr.closeExpiredConnections(); 49 // Close inactive connection 50 connMgr.closeIdleConnections(30, TimeUnit.SECONDS); 51 } 52 } 53 } catch (InterruptedException ex) { 54 // terminate 55 } 56 } 57 58 public void shutdown() { 59 shutdown = true; 60 synchronized (this) { 61 notifyAll(); 62 } 63 } 64 65 }