Author: midon
Date: Mon Nov 2 23:08:23 2009
New Revision: 832179
URL: http://svn.apache.org/viewvc?rev=832179&view=rev
Log:
ODE-691: check periodically for idle http connections
Modified:
ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
Modified: ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL:
http://svn.apache.org/viewvc/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?rev=832179&r1=832178&r2=832179&view=diff
==============================================================================
--- ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java (original)
+++ ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java Mon Nov
2 23:08:23 2009
@@ -53,6 +53,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.httpclient.util.IdleConnectionTimeoutThread;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.ode.axis2.deploy.DeploymentPoller;
import org.apache.ode.axis2.hooks.ODEAxisService;
@@ -121,6 +122,7 @@
private BpelServerConnector _connector;
private ManagementService _mgtService;
protected MultiThreadedHttpConnectionManager httpConnectionManager;
+ protected IdleConnectionTimeoutThread idleConnectionTimeoutThread;
public void init(ServletConfig config, AxisConfiguration axisConf) throws
ServletException {
init(config.getServletContext().getRealPath("/WEB-INF"), axisConf);
@@ -335,6 +337,14 @@
__log.error("Unable to shut down HTTP connection
manager.", t);
}
}
+ if(idleConnectionTimeoutThread!=null){
+ __log.debug("shutting down Idle Connection Timeout Thread.");
+ try {
+ idleConnectionTimeoutThread.shutdown();
+ } catch(Throwable t) {
+ __log.error("Unable to shut down Idle Connection Timeout
Thread.", t);
+ }
+ }
try {
__log.debug("cleaning up temporary files.");
TempFileManager.cleanup();
@@ -562,6 +572,22 @@
}
httpConnectionManager.getParams().setDefaultMaxConnectionsPerHost(max_per_host);
httpConnectionManager.getParams().setMaxTotalConnections(max_total);
+
+ // Register the connection manager to a idle check thread
+ idleConnectionTimeoutThread = new IdleConnectionTimeoutThread();
+
idleConnectionTimeoutThread.setName("Http_Idle_Connection_Timeout_Thread");
+ long idleConnectionTimeout =
Long.parseLong(_odeConfig.getProperty("http.idle.connection.timeout", "30000"));
+ long idleConnectionCheckInterval =
Long.parseLong(_odeConfig.getProperty("http.idle.connection.check.interval",
"30000"));
+
+ if(__log.isDebugEnabled()){
+ __log.debug("http.idle.connection.timeout="+idleConnectionTimeout);
+
__log.debug("http.idle.connection.check.interval="+idleConnectionCheckInterval);
+ }
+
idleConnectionTimeoutThread.setConnectionTimeout(idleConnectionTimeout);
+
idleConnectionTimeoutThread.setTimeoutInterval(idleConnectionCheckInterval);
+
+
idleConnectionTimeoutThread.addConnectionManager(httpConnectionManager);
+ idleConnectionTimeoutThread.start();
}
public ProcessStoreImpl getProcessStore() {