Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2012-06-25 10:41:23 +0000
committerEike Stepper2012-06-25 10:41:23 +0000
commitdd2209e1dcdf369d9342f7f6bc0142999c2cac3d (patch)
tree228ce03267c94d8677e735580297409c4e7521cf /plugins/org.eclipse.net4j.http.server
parent1055a710c86065c1bb5c25bd4fbc72f8ed404c89 (diff)
downloadcdo-dd2209e1dcdf369d9342f7f6bc0142999c2cac3d.tar.gz
cdo-dd2209e1dcdf369d9342f7f6bc0142999c2cac3d.tar.xz
cdo-dd2209e1dcdf369d9342f7f6bc0142999c2cac3d.zip
[383292] Thread names missing, thread management.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=383292
Diffstat (limited to 'plugins/org.eclipse.net4j.http.server')
-rw-r--r--plugins/org.eclipse.net4j.http.server/META-INF/MANIFEST.MF10
-rw-r--r--plugins/org.eclipse.net4j.http.server/src/org/eclipse/net4j/http/internal/server/HTTPAcceptor.java528
2 files changed, 272 insertions, 266 deletions
diff --git a/plugins/org.eclipse.net4j.http.server/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.http.server/META-INF/MANIFEST.MF
index 00980bcbda..8af8ced103 100644
--- a/plugins/org.eclipse.net4j.http.server/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.net4j.http.server/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.net4j.http.server;singleton:=true
-Bundle-Version: 4.0.100.qualifier
+Bundle-Version: 4.0.200.qualifier
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-Localization: plugin
@@ -14,7 +14,7 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";resoluti
org.eclipse.equinox.http.registry;bundle-version="[1.0.0,2.0.0)"
Import-Package: javax.servlet;version="[2.3.0,3.0.0)",
javax.servlet.http;version="[2.3.0,3.0.0)"
-Export-Package: org.eclipse.net4j.http.internal.server;version="4.0.100";x-friends:="org.eclipse.net4j.http.tests,org.eclipse.net4j.defs",
- org.eclipse.net4j.http.internal.server.bundle;version="4.0.100";x-internal:=true,
- org.eclipse.net4j.http.internal.server.messages;version="4.0.100";x-internal:=true,
- org.eclipse.net4j.http.server;version="4.0.100"
+Export-Package: org.eclipse.net4j.http.internal.server;version="4.0.200";x-friends:="org.eclipse.net4j.http.tests,org.eclipse.net4j.defs",
+ org.eclipse.net4j.http.internal.server.bundle;version="4.0.200";x-internal:=true,
+ org.eclipse.net4j.http.internal.server.messages;version="4.0.200";x-internal:=true,
+ org.eclipse.net4j.http.server;version="4.0.200"
diff --git a/plugins/org.eclipse.net4j.http.server/src/org/eclipse/net4j/http/internal/server/HTTPAcceptor.java b/plugins/org.eclipse.net4j.http.server/src/org/eclipse/net4j/http/internal/server/HTTPAcceptor.java
index 933b1eef39..57ba9fb911 100644
--- a/plugins/org.eclipse.net4j.http.server/src/org/eclipse/net4j/http/internal/server/HTTPAcceptor.java
+++ b/plugins/org.eclipse.net4j.http.server/src/org/eclipse/net4j/http/internal/server/HTTPAcceptor.java
@@ -1,261 +1,267 @@
-/*
- * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- */
-package org.eclipse.net4j.http.internal.server;
-
-import org.eclipse.net4j.connector.IConnector;
-import org.eclipse.net4j.http.common.IHTTPConnector;
-import org.eclipse.net4j.http.internal.common.HTTPConnector;
-import org.eclipse.net4j.http.internal.server.bundle.OM;
-import org.eclipse.net4j.http.internal.server.messages.Messages;
-import org.eclipse.net4j.http.server.IHTTPAcceptor;
-import org.eclipse.net4j.http.server.INet4jTransportServlet;
-import org.eclipse.net4j.util.StringUtil;
-import org.eclipse.net4j.util.concurrent.Worker;
-import org.eclipse.net4j.util.io.ExtendedDataInputStream;
-import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
-import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
-import org.eclipse.net4j.util.om.log.OMLogger;
-import org.eclipse.net4j.util.om.trace.ContextTracer;
-import org.eclipse.net4j.util.security.IRandomizer;
-
-import org.eclipse.spi.net4j.Acceptor;
-import org.eclipse.spi.net4j.InternalConnector;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author Eike Stepper
- */
-public class HTTPAcceptor extends Acceptor implements IHTTPAcceptor, INet4jTransportServlet.RequestHandler
-{
- public static final int DEFAULT_CONNECTOR_ID_LENGTH = 32;
-
- public static final int DEFAULT_MAX_IDLE_TIME = 30 * 60 * 1000; // 30 minutes
-
- private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HTTPAcceptor.class);
-
- private IRandomizer randomizer;
-
- private INet4jTransportServlet servlet;
-
- private int connectorIDLength = DEFAULT_CONNECTOR_ID_LENGTH;
-
- private int maxIdleTime = DEFAULT_MAX_IDLE_TIME;
-
- private Map<String, HTTPServerConnector> httpConnectors = new HashMap<String, HTTPServerConnector>();
-
- private Worker cleaner = new Worker()
- {
- @Override
- protected void work(WorkContext context) throws Exception
- {
- int pause = cleanIdleConnectors();
- context.nextWork(pause);
- }
- };
-
- public HTTPAcceptor()
- {
- }
-
- public IRandomizer getRandomizer()
- {
- return randomizer;
- }
-
- public void setRandomizer(IRandomizer randomizer)
- {
- this.randomizer = randomizer;
- }
-
- public INet4jTransportServlet getServlet()
- {
- return servlet;
- }
-
- public void setServlet(INet4jTransportServlet servlet)
- {
- if (this.servlet != null)
- {
- this.servlet.setRequestHandler(null);
- }
-
- this.servlet = servlet;
- if (this.servlet != null)
- {
- this.servlet.setRequestHandler(this);
- }
- }
-
- public int getConnectorIDLength()
- {
- return connectorIDLength;
- }
-
- public void setConnectorIDLength(int connectorIDLength)
- {
- this.connectorIDLength = connectorIDLength;
- }
-
- public int getMaxIdleTime()
- {
- return maxIdleTime;
- }
-
- public void setMaxIdleTime(int maxIdleTime)
- {
- this.maxIdleTime = maxIdleTime;
- }
-
- public IHTTPConnector[] getHTTPConnectors()
- {
- List<IHTTPConnector> result = new ArrayList<IHTTPConnector>();
- for (IConnector acceptedConnector : getAcceptedConnectors())
- {
- IHTTPConnector connector = (IHTTPConnector)acceptedConnector;
- result.add(connector);
- }
-
- return result.toArray(new IHTTPConnector[result.size()]);
- }
-
- public IHTTPConnector[] handleList(String connectorID)
- {
- if (StringUtil.isEmpty(connectorID))
- {
- return getHTTPConnectors();
- }
-
- return new IHTTPConnector[] { httpConnectors.get(connectorID) };
- }
-
- public IHTTPConnector handleConnect(String userID)
- {
- String connectorID = createConnectorID(userID);
- HTTPServerConnector connector = createServerConnector();
- prepareConnector(connector);
- connector.setConnectorID(connectorID);
- connector.setUserID(userID);
- addConnector(connector);
- connector.activate();
-
- return connector;
- }
-
- public void handleDisonnect(String connectorID)
- {
- HTTPConnector connector = httpConnectors.get(connectorID);
- if (connector == null)
- {
- throw new IllegalArgumentException("Invalid connectorID: " + connectorID); //$NON-NLS-1$
- }
-
- connector.deactivate();
- }
-
- public void handleOperations(String connectorID, ExtendedDataInputStream in, ExtendedDataOutputStream out)
- throws IOException
- {
- HTTPServerConnector connector = httpConnectors.get(connectorID);
- if (connector == null)
- {
- throw new IllegalArgumentException("Invalid connectorID: " + connectorID); //$NON-NLS-1$
- }
-
- connector.readInputOperations(in);
- connector.writeOutputOperations(out);
- }
-
- @Override
- public String toString()
- {
- return "HTTPAcceptor"; //$NON-NLS-1$
- }
-
- @Override
- public void addConnector(InternalConnector connector)
- {
- super.addConnector(connector);
- HTTPServerConnector httpConnector = (HTTPServerConnector)connector;
- httpConnectors.put(httpConnector.getConnectorID(), httpConnector);
- }
-
- @Override
- public void removeConnector(IConnector connector)
- {
- HTTPConnector httpConnector = (HTTPConnector)connector;
- httpConnectors.remove(httpConnector.getConnectorID());
- super.removeConnector(connector);
- }
-
- @Override
- protected void doBeforeActivate() throws Exception
- {
- super.doBeforeActivate();
- checkState(randomizer, "randomizer"); //$NON-NLS-1$
- checkState(connectorIDLength > 0, "Constraint violated: connectorIDLength > 0"); //$NON-NLS-1$
- checkState(maxIdleTime >= 100, "Constraint violated: maxIdleTime >= 100"); //$NON-NLS-1$
- }
-
- @Override
- protected void doActivate() throws Exception
- {
- super.doActivate();
- cleaner.setDaemon(true);
- cleaner.activate();
- }
-
- @Override
- protected void doDeactivate() throws Exception
- {
- LifecycleUtil.deactivate(cleaner, OMLogger.Level.WARN);
- super.doDeactivate();
- }
-
- protected String createConnectorID(String userID)
- {
- return randomizer.nextString(connectorIDLength, "0123456789ABCDEF"); //$NON-NLS-1$
- }
-
- protected HTTPServerConnector createServerConnector()
- {
- return new HTTPServerConnector(this);
- }
-
- protected int cleanIdleConnectors()
- {
- long now = System.currentTimeMillis();
- IConnector[] connectors = getAcceptedConnectors();
- if (TRACER.isEnabled())
- {
- TRACER.format("Checking {0} HTTP server connectors for idle time: {1,time}", connectors.length, new Date()); //$NON-NLS-1$
- }
-
- for (IConnector connector : connectors)
- {
- HTTPServerConnector serverConnector = (HTTPServerConnector)connector;
- long lastTraffic = serverConnector.getLastTraffic();
- long idleTime = now - lastTraffic;
- if (idleTime > maxIdleTime)
- {
- serverConnector.deactivate();
- OM.LOG.info(Messages.getString("HTTPAcceptor.8") + serverConnector); //$NON-NLS-1$
- }
- }
-
- return maxIdleTime;
- }
-}
+/*
+ * Copyright (c) 2004 - 2012 Eike Stepper (Berlin, Germany) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ */
+package org.eclipse.net4j.http.internal.server;
+
+import org.eclipse.net4j.connector.IConnector;
+import org.eclipse.net4j.http.common.IHTTPConnector;
+import org.eclipse.net4j.http.internal.common.HTTPConnector;
+import org.eclipse.net4j.http.internal.server.bundle.OM;
+import org.eclipse.net4j.http.internal.server.messages.Messages;
+import org.eclipse.net4j.http.server.IHTTPAcceptor;
+import org.eclipse.net4j.http.server.INet4jTransportServlet;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.concurrent.Worker;
+import org.eclipse.net4j.util.io.ExtendedDataInputStream;
+import org.eclipse.net4j.util.io.ExtendedDataOutputStream;
+import org.eclipse.net4j.util.lifecycle.LifecycleUtil;
+import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.trace.ContextTracer;
+import org.eclipse.net4j.util.security.IRandomizer;
+
+import org.eclipse.spi.net4j.Acceptor;
+import org.eclipse.spi.net4j.InternalConnector;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPAcceptor extends Acceptor implements IHTTPAcceptor, INet4jTransportServlet.RequestHandler
+{
+ public static final int DEFAULT_CONNECTOR_ID_LENGTH = 32;
+
+ public static final int DEFAULT_MAX_IDLE_TIME = 30 * 60 * 1000; // 30 minutes
+
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HTTPAcceptor.class);
+
+ private IRandomizer randomizer;
+
+ private INet4jTransportServlet servlet;
+
+ private int connectorIDLength = DEFAULT_CONNECTOR_ID_LENGTH;
+
+ private int maxIdleTime = DEFAULT_MAX_IDLE_TIME;
+
+ private Map<String, HTTPServerConnector> httpConnectors = new HashMap<String, HTTPServerConnector>();
+
+ private Worker cleaner = new Worker()
+ {
+ @Override
+ protected void work(WorkContext context) throws Exception
+ {
+ int pause = cleanIdleConnectors();
+ context.nextWork(pause);
+ }
+
+ @Override
+ protected String getThreadName()
+ {
+ return "HTTPAcceptorCleaner";
+ }
+ };
+
+ public HTTPAcceptor()
+ {
+ }
+
+ public IRandomizer getRandomizer()
+ {
+ return randomizer;
+ }
+
+ public void setRandomizer(IRandomizer randomizer)
+ {
+ this.randomizer = randomizer;
+ }
+
+ public INet4jTransportServlet getServlet()
+ {
+ return servlet;
+ }
+
+ public void setServlet(INet4jTransportServlet servlet)
+ {
+ if (this.servlet != null)
+ {
+ this.servlet.setRequestHandler(null);
+ }
+
+ this.servlet = servlet;
+ if (this.servlet != null)
+ {
+ this.servlet.setRequestHandler(this);
+ }
+ }
+
+ public int getConnectorIDLength()
+ {
+ return connectorIDLength;
+ }
+
+ public void setConnectorIDLength(int connectorIDLength)
+ {
+ this.connectorIDLength = connectorIDLength;
+ }
+
+ public int getMaxIdleTime()
+ {
+ return maxIdleTime;
+ }
+
+ public void setMaxIdleTime(int maxIdleTime)
+ {
+ this.maxIdleTime = maxIdleTime;
+ }
+
+ public IHTTPConnector[] getHTTPConnectors()
+ {
+ List<IHTTPConnector> result = new ArrayList<IHTTPConnector>();
+ for (IConnector acceptedConnector : getAcceptedConnectors())
+ {
+ IHTTPConnector connector = (IHTTPConnector)acceptedConnector;
+ result.add(connector);
+ }
+
+ return result.toArray(new IHTTPConnector[result.size()]);
+ }
+
+ public IHTTPConnector[] handleList(String connectorID)
+ {
+ if (StringUtil.isEmpty(connectorID))
+ {
+ return getHTTPConnectors();
+ }
+
+ return new IHTTPConnector[] { httpConnectors.get(connectorID) };
+ }
+
+ public IHTTPConnector handleConnect(String userID)
+ {
+ String connectorID = createConnectorID(userID);
+ HTTPServerConnector connector = createServerConnector();
+ prepareConnector(connector);
+ connector.setConnectorID(connectorID);
+ connector.setUserID(userID);
+ addConnector(connector);
+ connector.activate();
+
+ return connector;
+ }
+
+ public void handleDisonnect(String connectorID)
+ {
+ HTTPConnector connector = httpConnectors.get(connectorID);
+ if (connector == null)
+ {
+ throw new IllegalArgumentException("Invalid connectorID: " + connectorID); //$NON-NLS-1$
+ }
+
+ connector.deactivate();
+ }
+
+ public void handleOperations(String connectorID, ExtendedDataInputStream in, ExtendedDataOutputStream out)
+ throws IOException
+ {
+ HTTPServerConnector connector = httpConnectors.get(connectorID);
+ if (connector == null)
+ {
+ throw new IllegalArgumentException("Invalid connectorID: " + connectorID); //$NON-NLS-1$
+ }
+
+ connector.readInputOperations(in);
+ connector.writeOutputOperations(out);
+ }
+
+ @Override
+ public String toString()
+ {
+ return "HTTPAcceptor"; //$NON-NLS-1$
+ }
+
+ @Override
+ public void addConnector(InternalConnector connector)
+ {
+ super.addConnector(connector);
+ HTTPServerConnector httpConnector = (HTTPServerConnector)connector;
+ httpConnectors.put(httpConnector.getConnectorID(), httpConnector);
+ }
+
+ @Override
+ public void removeConnector(IConnector connector)
+ {
+ HTTPConnector httpConnector = (HTTPConnector)connector;
+ httpConnectors.remove(httpConnector.getConnectorID());
+ super.removeConnector(connector);
+ }
+
+ @Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ checkState(randomizer, "randomizer"); //$NON-NLS-1$
+ checkState(connectorIDLength > 0, "Constraint violated: connectorIDLength > 0"); //$NON-NLS-1$
+ checkState(maxIdleTime >= 100, "Constraint violated: maxIdleTime >= 100"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+ cleaner.setDaemon(true);
+ cleaner.activate();
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ LifecycleUtil.deactivate(cleaner, OMLogger.Level.WARN);
+ super.doDeactivate();
+ }
+
+ protected String createConnectorID(String userID)
+ {
+ return randomizer.nextString(connectorIDLength, "0123456789ABCDEF"); //$NON-NLS-1$
+ }
+
+ protected HTTPServerConnector createServerConnector()
+ {
+ return new HTTPServerConnector(this);
+ }
+
+ protected int cleanIdleConnectors()
+ {
+ long now = System.currentTimeMillis();
+ IConnector[] connectors = getAcceptedConnectors();
+ if (TRACER.isEnabled())
+ {
+ TRACER.format("Checking {0} HTTP server connectors for idle time: {1,time}", connectors.length, new Date()); //$NON-NLS-1$
+ }
+
+ for (IConnector connector : connectors)
+ {
+ HTTPServerConnector serverConnector = (HTTPServerConnector)connector;
+ long lastTraffic = serverConnector.getLastTraffic();
+ long idleTime = now - lastTraffic;
+ if (idleTime > maxIdleTime)
+ {
+ serverConnector.deactivate();
+ OM.LOG.info(Messages.getString("HTTPAcceptor.8") + serverConnector); //$NON-NLS-1$
+ }
+ }
+
+ return maxIdleTime;
+ }
+}

Back to the top