-
-
-
-
+
+
10
200
false
-
+
+
-
+
300000
- 2
- false
- 8443
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java
index 7de823ebb86..1cdd2c0bd71 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java
@@ -24,10 +24,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadFactory;
import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -41,6 +38,8 @@ import org.eclipse.jetty.util.component.Dumpable;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
+import org.eclipse.jetty.util.thread.TimerScheduler;
/**
* Partial implementation of {@link Connector}
@@ -55,11 +54,10 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
private final Server _server;
private final SslContextFactory _sslContextFactory;
private final Executor _executor;
- private final ScheduledExecutorService _scheduler;
+ private final Scheduler _scheduler;
private final ByteBufferPool _byteBufferPool;
private final Thread[] _acceptors;
private volatile CountDownLatch _stopping;
- private volatile String _name;
private volatile long _idleTimeout = 200000;
private volatile ConnectionFactory defaultConnectionFactory;
@@ -74,30 +72,23 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
public AbstractConnector(
Server server,
Executor executor,
- ScheduledExecutorService scheduler,
+ Scheduler scheduler,
ByteBufferPool pool,
SslContextFactory sslContextFactory,
int acceptors)
{
_server=server;
_executor=executor!=null?executor:_server.getThreadPool();
- _scheduler=scheduler!=null?scheduler:Executors.newSingleThreadScheduledExecutor(new ThreadFactory()
- {
- @Override
- public Thread newThread(Runnable r)
- {
- return new Thread(r, "Scheduler-" + getName());
- }
- });
+ _scheduler=scheduler!=null?scheduler:new TimerScheduler();
_byteBufferPool = pool!=null?pool:new MappedByteBufferPool();
_sslContextFactory = sslContextFactory;
addBean(_server,false);
addBean(_executor);
if (executor==null)
- unmanage(_executor);
- addBean(_scheduler,scheduler==null);
- addBean(_byteBufferPool,pool==null);
+ unmanage(_executor); // inherited from server
+ addBean(_scheduler);
+ addBean(_byteBufferPool);
addBean(_sslContextFactory);
addBean(_stats,true);
@@ -341,18 +332,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
}
- @Override
- @ManagedAttribute("name of the connector")
- public String getName()
- {
- return _name;
- }
-
- public void setName(String name)
- {
- _name = name;
- }
-
protected void connectionOpened(Connection connection)
{
_stats.connectionOpened();
@@ -373,7 +352,8 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
_stats.connectionClosed(duration, requests, requests);
}
- public ScheduledExecutorService getScheduler()
+ @Override
+ public Scheduler getScheduler()
{
return _scheduler;
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java
index c4fc3799cc6..21fafc7a50c 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/AbstractNetworkConnector.java
@@ -21,10 +21,10 @@ package org.eclipse.jetty.server;
import java.io.IOException;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
/**
* Partial implementation of {@link NetworkConnector}.
@@ -34,7 +34,7 @@ public abstract class AbstractNetworkConnector extends AbstractConnector impleme
private volatile String _host;
private volatile int _port = 0;
- public AbstractNetworkConnector(Server server, Executor executor, ScheduledExecutorService scheduler, ByteBufferPool pool, SslContextFactory sslContextFactory, int acceptors)
+ public AbstractNetworkConnector(Server server, Executor executor, Scheduler scheduler, ByteBufferPool pool, SslContextFactory sslContextFactory, int acceptors)
{
super(server, executor, scheduler, pool, sslContextFactory, acceptors);
}
@@ -70,13 +70,7 @@ public abstract class AbstractNetworkConnector extends AbstractConnector impleme
@Override
protected void doStart() throws Exception
{
- if (getName() == null)
- setName(getHost() == null ? "0.0.0.0" : getHost() + ":" + getPort());
-
open();
-
- setName(getName() + "/" + getLocalPort());
-
super.doStart();
}
@@ -84,12 +78,7 @@ public abstract class AbstractNetworkConnector extends AbstractConnector impleme
protected void doStop() throws Exception
{
close();
-
super.doStop();
-
- int i = getName().lastIndexOf("/");
- if (i > 0)
- setName(getName().substring(0, i));
}
@Override
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java
index 99a877c8b45..908abd0db07 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java
@@ -19,7 +19,6 @@
package org.eclipse.jetty.server;
import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.util.annotation.ManagedAttribute;
@@ -27,6 +26,7 @@ import org.eclipse.jetty.util.annotation.ManagedObject;
import org.eclipse.jetty.util.component.Graceful;
import org.eclipse.jetty.util.component.LifeCycle;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
/**
* A {@link Connector} accept connections and data from remote peers,
@@ -36,11 +36,6 @@ import org.eclipse.jetty.util.ssl.SslContextFactory;
@ManagedObject("Connector Interface")
public interface Connector extends LifeCycle, Graceful
{
- /**
- * @return the name of the connector, defaulting to host:port
- */
- public String getName();
-
/**
* @return the {@link Server} instance associated with this {@link Connector}
*/
@@ -52,9 +47,9 @@ public interface Connector extends LifeCycle, Graceful
public Executor getExecutor();
/**
- * @return the {@link ScheduledExecutorService} used to schedule tasks
+ * @return the {@link Scheduler} used to schedule tasks
*/
- public ScheduledExecutorService getScheduler();
+ public Scheduler getScheduler();
/**
* @return the {@link ByteBufferPool} to acquire buffers from and release buffers to
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
index a0c8c420e22..29fac7f48a2 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java
@@ -21,7 +21,6 @@ package org.eclipse.jetty.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import javax.servlet.DispatcherType;
@@ -47,6 +46,7 @@ import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.thread.Scheduler;
/* ------------------------------------------------------------ */
@@ -232,7 +232,7 @@ public class HttpChannel implements HttpParser.RequestHandler, Runnable
{
try
{
- _request.setHandled(false); // TODO: is this right here ?
+ _request.setHandled(false);
_response.getHttpOutput().reopen();
if (_state.isInitial())
@@ -617,7 +617,7 @@ public class HttpChannel implements HttpParser.RequestHandler, Runnable
_connector.getExecutor().execute(task);
}
- public ScheduledExecutorService getScheduler()
+ public Scheduler getScheduler()
{
return _connector.getScheduler();
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java
index f2b3780ca97..83e7f0ee079 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannelState.java
@@ -20,8 +20,6 @@ package org.eclipse.jetty.server;
import java.util.ArrayList;
import java.util.List;
-import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.servlet.AsyncContext;
import javax.servlet.AsyncEvent;
@@ -41,6 +39,7 @@ import org.eclipse.jetty.server.handler.ContextHandler.Context;
import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.thread.Scheduler;
/* ------------------------------------------------------------ */
/** Implementation of Continuation and AsyncContext interfaces
@@ -723,7 +722,7 @@ public class HttpChannelState implements AsyncContext, Continuation
/* ------------------------------------------------------------ */
protected void scheduleTimeout()
{
- ScheduledExecutorService scheduler = _channel.getScheduler();
+ Scheduler scheduler = _channel.getScheduler();
if (scheduler!=null)
_event._timeout=scheduler.schedule(new AsyncTimeout(),_timeoutMs,TimeUnit.MILLISECONDS);
}
@@ -734,9 +733,9 @@ public class HttpChannelState implements AsyncContext, Continuation
AsyncEventState event=_event;
if (event!=null)
{
- Future> task=event._timeout;
+ Scheduler.Task task=event._timeout;
if (task!=null)
- task.cancel(false);
+ task.cancel();
}
}
@@ -1038,7 +1037,7 @@ public class HttpChannelState implements AsyncContext, Continuation
/* ------------------------------------------------------------ */
public class AsyncEventState extends AsyncEvent
{
- private Future> _timeout;
+ private Scheduler.Task _timeout;
private final ServletContext _suspendedContext;
private ServletContext _dispatchContext;
private String _pathInContext;
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpServerConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpServerConnector.java
index 46748c4f56b..19db4db28e8 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpServerConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpServerConnector.java
@@ -19,11 +19,11 @@
package org.eclipse.jetty.server;
import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.util.annotation.Name;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
public class HttpServerConnector extends SelectChannelConnector
{
@@ -37,7 +37,7 @@ public class HttpServerConnector extends SelectChannelConnector
this(server, null, null, null, sslContextFactory, 0, 0);
}
- public HttpServerConnector(@Name("server") Server server, @Name("executor") Executor executor, @Name("scheduler") ScheduledExecutorService scheduler, @Name("bufferPool") ByteBufferPool pool, @Name("sslContextFactory") SslContextFactory sslContextFactory, @Name("acceptors") int acceptors, @Name("selectors") int selectors)
+ public HttpServerConnector(@Name("server") Server server, @Name("executor") Executor executor, @Name("scheduler") Scheduler scheduler, @Name("bufferPool") ByteBufferPool pool, @Name("sslContextFactory") SslContextFactory sslContextFactory, @Name("acceptors") int acceptors, @Name("selectors") int selectors)
{
super(server, executor, scheduler, pool, sslContextFactory, acceptors, selectors);
setDefaultConnectionFactory(new HttpServerConnectionFactory(this));
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java
index c265a7ea48d..9764dd32a84 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/LocalConnector.java
@@ -24,7 +24,6 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.net.ssl.SSLEngine;
@@ -36,6 +35,7 @@ import org.eclipse.jetty.io.ssl.SslConnection;
import org.eclipse.jetty.util.BufferUtil;
import org.eclipse.jetty.util.StringUtil;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
public class LocalConnector extends AbstractConnector
{
@@ -51,7 +51,7 @@ public class LocalConnector extends AbstractConnector
this(server, null, null, null, sslContextFactory, 0);
}
- public LocalConnector(Server server, Executor executor, ScheduledExecutorService scheduler, ByteBufferPool pool,
+ public LocalConnector(Server server, Executor executor, Scheduler scheduler, ByteBufferPool pool,
SslContextFactory sslContextFactory, int acceptors)
{
super(server,executor,scheduler,pool, sslContextFactory, acceptors);
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
index 29ce8e5a972..d38187f278f 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java
@@ -67,6 +67,7 @@ import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandler.Context;
+import org.eclipse.jetty.server.session.AbstractSessionManager;
import org.eclipse.jetty.util.Attributes;
import org.eclipse.jetty.util.AttributesMap;
import org.eclipse.jetty.util.MultiMap;
@@ -1161,6 +1162,21 @@ public class Request implements HttpServletRequest
return _channel.getResponse();
}
+ /* ------------------------------------------------------------ */
+ /*
+ * Add @override when 3.1 api is available
+ */
+ public String changeSessionId()
+ {
+ HttpSession session = getSession(false);
+ if (session == null)
+ throw new IllegalStateException("No session");
+
+ AbstractSessionManager.renewSession(this, session, getRemoteUser()!=null);
+
+ return session.getId();
+ }
+
/* ------------------------------------------------------------ */
/*
* @see javax.servlet.http.HttpServletRequest#getSession()
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/SelectChannelConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/SelectChannelConnector.java
index cf6eb5971b9..6aec9e8ec85 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/SelectChannelConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/SelectChannelConnector.java
@@ -29,7 +29,6 @@ import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
import javax.net.ssl.SSLEngine;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -42,6 +41,7 @@ import org.eclipse.jetty.io.ssl.SslConnection;
import org.eclipse.jetty.util.annotation.ManagedObject;
import org.eclipse.jetty.util.annotation.Name;
import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.eclipse.jetty.util.thread.Scheduler;
/**
* Implementation of {@link NetworkConnector} based on NIO classes.
@@ -57,12 +57,12 @@ public class SelectChannelConnector extends AbstractNetworkConnector
private volatile boolean _reuseAddress = true;
private volatile int _lingerTime = -1;
- public SelectChannelConnector(Server server)
+ public SelectChannelConnector(@Name("server") Server server)
{
this(server, null);
}
- public SelectChannelConnector(Server server, SslContextFactory sslContextFactory)
+ public SelectChannelConnector(@Name("server")Server server, @Name("sslContextFactory") SslContextFactory sslContextFactory)
{
this(server, null, null, null, sslContextFactory, 0, 0);
}
@@ -77,7 +77,7 @@ public class SelectChannelConnector extends AbstractNetworkConnector
public SelectChannelConnector(
@Name("server") Server server,
@Name("executor") Executor executor,
- @Name("scheduler") ScheduledExecutorService scheduler,
+ @Name("scheduler") Scheduler scheduler,
@Name("bufferPool") ByteBufferPool pool,
@Name("sslContextFactory") SslContextFactory sslContextFactory,
@Name("acceptors") int acceptors,
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java
index 2c066bfcb78..a4eb0dfdae1 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java
@@ -46,6 +46,7 @@ import org.eclipse.jetty.util.TypeUtil;
import org.eclipse.jetty.util.URIUtil;
import org.eclipse.jetty.util.annotation.ManagedAttribute;
import org.eclipse.jetty.util.annotation.ManagedObject;
+import org.eclipse.jetty.util.annotation.Name;
import org.eclipse.jetty.util.component.Container;
import org.eclipse.jetty.util.component.Destroyable;
import org.eclipse.jetty.util.component.Graceful;
@@ -79,7 +80,7 @@ public class Server extends HandlerWrapper implements Attributes
__version=System.getProperty("jetty.version","9.x.y.z-SNAPSHOT");
}
- private final Container _container=new Container();
+ private final Container _container;
private final AttributesMap _attributes = new AttributesMap();
private final ThreadPool _threadPool;
private final List _connectors = new CopyOnWriteArrayList<>();
@@ -101,7 +102,7 @@ public class Server extends HandlerWrapper implements Attributes
/** Convenience constructor
* Creates server and a {@link SelectChannelConnector} at the passed port.
*/
- public Server(int port)
+ public Server(@Name("port")int port)
{
this((ThreadPool)null);
SelectChannelConnector connector=new SelectChannelConnector(this);
@@ -113,7 +114,7 @@ public class Server extends HandlerWrapper implements Attributes
/** Convenience constructor
* Creates server and a {@link SelectChannelConnector} at the passed address.
*/
- public Server(InetSocketAddress addr)
+ public Server(@Name("address")InetSocketAddress addr)
{
this((ThreadPool)null);
SelectChannelConnector connector=new SelectChannelConnector(this);
@@ -124,9 +125,16 @@ public class Server extends HandlerWrapper implements Attributes
/* ------------------------------------------------------------ */
- public Server(ThreadPool pool)
+ public Server(@Name("threadpool") ThreadPool pool)
+ {
+ this(pool, null);
+ }
+
+ /* ------------------------------------------------------------ */
+ public Server(@Name("threadpool") ThreadPool pool,@Name("container") Container container)
{
_threadPool=pool!=null?pool:new QueuedThreadPool();
+ _container=container!=null?container:new Container();
addBean(_threadPool);
setServer(this);
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
index 3837f7f9fc5..22f31e99228 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java
@@ -63,7 +63,6 @@ import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.Dispatcher;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HandlerContainer;
-import org.eclipse.jetty.server.HttpChannel;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.ArrayUtil;
@@ -147,7 +146,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
private String[] _vhosts;
- private Set _connectors;
private EventListener[] _eventListeners;
private Logger _logger;
@@ -168,7 +166,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
private Map _managedAttributes;
private String[] _protectedTargets;
- public enum Availability { AVAILABLE,SHUTDOWN,UNAVAILABLE};
+ public enum Availability { UNAVAILABLE,STARTING,AVAILABLE,SHUTDOWN,};
private volatile Availability _availability;
/* ------------------------------------------------------------ */
@@ -392,36 +390,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
return _vhosts;
}
- /* ------------------------------------------------------------ */
- /**
- * @return an array of connector names that this context will accept a request from.
- */
- @ManagedAttribute("Names and ports of accepted connectors")
- public String[] getConnectorNames()
- {
- if (_connectors == null || _connectors.size() == 0)
- return null;
-
- return _connectors.toArray(new String[_connectors.size()]);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Set the names of accepted connectors.
- *
- * Names are either "host:port" or a specific configured name for a connector.
- *
- * @param connectors
- * If non null, an array of connector names that this context will accept a request from.
- */
- public void setConnectorNames(String[] connectors)
- {
- if (connectors == null || connectors.length == 0)
- _connectors = null;
- else
- _connectors = new HashSet(Arrays.asList(connectors));
- }
-
/* ------------------------------------------------------------ */
/*
* @see javax.servlet.ServletContext#getAttribute(java.lang.String)
@@ -697,7 +665,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
@Override
protected void doStart() throws Exception
{
- _availability = Availability.UNAVAILABLE;
+ _availability = Availability.STARTING;
if (_contextPath == null)
throw new IllegalStateException("Null contextPath");
@@ -727,6 +695,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
startContext();
_availability = Availability.AVAILABLE;
+ LOG.info("started {}",this);
}
finally
{
@@ -787,7 +756,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
public void callContextInitialized (ServletContextListener l, ServletContextEvent e)
{
l.contextInitialized(e);
- LOG.info("started {}",this);
}
/* ------------------------------------------------------------ */
@@ -899,14 +867,6 @@ public class ContextHandler extends ScopedHandler implements Attributes, Gracefu
return false;
}
- // Check the connector
- if (_connectors != null && _connectors.size() > 0)
- {
- String connector = HttpChannel.getCurrentHttpChannel().getConnector().getName();
- if (connector == null || !_connectors.contains(connector))
- return false;
- }
-
// Are we not the root context?
if (_contextPath.length() > 1)
{
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java
index f7b2aa04d8c..0d8277a8324 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/AbstractHttpTest.java
@@ -66,8 +66,8 @@ public abstract class AbstractHttpTest
@After
public void tearDown() throws Exception
{
- ((StdErrLog)Log.getLogger(HttpChannel.class)).setHideStacks(false);
server.stop();
+ ((StdErrLog)Log.getLogger(HttpChannel.class)).setHideStacks(false);
}
protected SimpleHttpResponse executeRequest() throws URISyntaxException, IOException
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToAsyncCommitBadBehaviourTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToAsyncCommitBadBehaviourTest.java
index da54ce2afbf..e1c0744fb50 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToAsyncCommitBadBehaviourTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/HttpManyWaysToAsyncCommitBadBehaviourTest.java
@@ -41,6 +41,7 @@ import static org.junit.Assert.assertThat;
//TODO: reset buffer tests
//TODO: add protocol specific tests for connection: close and/or chunking
+
@RunWith(value = Parameterized.class)
public class HttpManyWaysToAsyncCommitBadBehaviourTest extends AbstractHttpTest
{
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java
index a1ce4cfc12d..71123685f53 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/ResponseTest.java
@@ -26,8 +26,6 @@ import java.net.Socket;
import java.nio.ByteBuffer;
import java.util.Iterator;
import java.util.Locale;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
@@ -43,6 +41,8 @@ import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.session.HashSessionIdManager;
import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.HashedSession;
+import org.eclipse.jetty.util.thread.Scheduler;
+import org.eclipse.jetty.util.thread.TimerScheduler;
import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.Assert;
@@ -58,19 +58,19 @@ public class ResponseTest
{
private Server _server;
private HttpChannel _channel;
- private ScheduledExecutorService _timer;
+ private Scheduler _scheduler;
@Before
public void init() throws Exception
{
_server = new Server();
- _timer = new ScheduledThreadPoolExecutor(1);
- LocalConnector connector = new LocalConnector(_server, null, _timer, null, null, 1);
+ _scheduler = new TimerScheduler();
+ LocalConnector connector = new LocalConnector(_server, null, _scheduler, null, null, 1);
_server.addConnector(connector);
_server.setHandler(new DumpHandler());
_server.start();
- AbstractEndPoint endp = new ByteArrayEndPoint(_timer, 5000);
+ AbstractEndPoint endp = new ByteArrayEndPoint(_scheduler, 5000);
ByteBufferHttpInput input = new ByteBufferHttpInput();
_channel = new HttpChannel(connector, new HttpConfiguration(null, false), endp, new HttpTransport()
{
@@ -96,7 +96,6 @@ public class ResponseTest
{
_server.stop();
_server.join();
- _timer.shutdownNow();
}
@Test
diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java
index 31f237d5e6f..56a90931b41 100644
--- a/jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java
+++ b/jetty-server/src/test/java/org/eclipse/jetty/server/StressTest.java
@@ -45,7 +45,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeTrue;
-@Ignore("Ignore until other tests are working")
+@Ignore
public class StressTest
{
private static final Logger LOG = Log.getLogger(StressTest.class);
@@ -119,6 +119,13 @@ public class StressTest
q.clear();
}
+
+ @Test
+ public void testMinNonPersistent() throws Throwable
+ {
+ doThreads(2,2,false);
+ }
+
@Test
public void testNonPersistent() throws Throwable
{
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
index 99ef4dc9e02..da85e5dee6a 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/GzipFilter.java
@@ -38,8 +38,8 @@ import org.eclipse.jetty.continuation.Continuation;
import org.eclipse.jetty.continuation.ContinuationListener;
import org.eclipse.jetty.continuation.ContinuationSupport;
import org.eclipse.jetty.http.HttpMethod;
-import org.eclipse.jetty.http.gzip.AbstractCompressedStream;
-import org.eclipse.jetty.http.gzip.CompressedResponseWrapper;
+import org.eclipse.jetty.servlets.gzip.AbstractCompressedStream;
+import org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java
index 14f89bc6e33..37d830e0b3a 100644
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/IncludableGzipFilter.java
@@ -31,9 +31,9 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.eclipse.jetty.http.gzip.AbstractCompressedStream;
-import org.eclipse.jetty.http.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.io.UncheckedPrintWriter;
+import org.eclipse.jetty.servlets.gzip.AbstractCompressedStream;
+import org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper;
/* ------------------------------------------------------------ */
/** Includable GZip Filter.
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/gzip/AbstractCompressedStream.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
similarity index 99%
rename from jetty-http/src/main/java/org/eclipse/jetty/http/gzip/AbstractCompressedStream.java
rename to jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
index 2d4831f2ad3..524cf6022df 100644
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/gzip/AbstractCompressedStream.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/AbstractCompressedStream.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.http.gzip;
+package org.eclipse.jetty.servlets.gzip;
import java.io.IOException;
import java.io.OutputStream;
diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/gzip/CompressedResponseWrapper.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java
similarity index 85%
rename from jetty-http/src/main/java/org/eclipse/jetty/http/gzip/CompressedResponseWrapper.java
rename to jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java
index 6557f78a519..2bf9e280e17 100644
--- a/jetty-http/src/main/java/org/eclipse/jetty/http/gzip/CompressedResponseWrapper.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/CompressedResponseWrapper.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.http.gzip;
+package org.eclipse.jetty.servlets.gzip;
import java.io.IOException;
import java.io.OutputStream;
@@ -58,7 +58,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setMimeTypes(java.util.Set)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setMimeTypes(java.util.Set)
*/
public void setMimeTypes(Set mimeTypes)
{
@@ -67,7 +67,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setBufferSize(int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setBufferSize(int)
*/
@Override
public void setBufferSize(int bufferSize)
@@ -77,7 +77,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setMinCompressSize(int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setMinCompressSize(int)
*/
public void setMinCompressSize(int minCompressSize)
{
@@ -86,7 +86,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setContentType(java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setContentType(java.lang.String)
*/
@Override
public void setContentType(String ct)
@@ -110,7 +110,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setStatus(int, java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setStatus(int, java.lang.String)
*/
@Override
public void setStatus(int sc, String sm)
@@ -122,7 +122,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setStatus(int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setStatus(int)
*/
@Override
public void setStatus(int sc)
@@ -134,7 +134,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setContentLength(int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setContentLength(int)
*/
@Override
public void setContentLength(int length)
@@ -164,7 +164,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#addHeader(java.lang.String, java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#addHeader(java.lang.String, java.lang.String)
*/
@Override
public void addHeader(String name, String value)
@@ -193,7 +193,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#flushBuffer()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#flushBuffer()
*/
@Override
public void flushBuffer() throws IOException
@@ -208,7 +208,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#reset()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#reset()
*/
@Override
public void reset()
@@ -224,7 +224,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#resetBuffer()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#resetBuffer()
*/
@Override
public void resetBuffer()
@@ -238,7 +238,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#sendError(int, java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#sendError(int, java.lang.String)
*/
@Override
public void sendError(int sc, String msg) throws IOException
@@ -249,7 +249,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#sendError(int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#sendError(int)
*/
@Override
public void sendError(int sc) throws IOException
@@ -260,7 +260,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#sendRedirect(java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#sendRedirect(java.lang.String)
*/
@Override
public void sendRedirect(String location) throws IOException
@@ -271,7 +271,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#noCompression()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#noCompression()
*/
public void noCompression()
{
@@ -291,7 +291,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#finish()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#finish()
*/
public void finish() throws IOException
{
@@ -303,7 +303,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setHeader(java.lang.String, java.lang.String)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setHeader(java.lang.String, java.lang.String)
*/
@Override
public void setHeader(String name, String value)
@@ -330,7 +330,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#getOutputStream()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#getOutputStream()
*/
@Override
public ServletOutputStream getOutputStream() throws IOException
@@ -353,7 +353,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#getWriter()
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#getWriter()
*/
@Override
public PrintWriter getWriter() throws IOException
@@ -377,7 +377,7 @@ public abstract class CompressedResponseWrapper extends HttpServletResponseWrapp
/* ------------------------------------------------------------ */
/**
- * @see org.eclipse.jetty.http.gzip.CompressedResponseWrapper#setIntHeader(java.lang.String, int)
+ * @see org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper#setIntHeader(java.lang.String, int)
*/
@Override
public void setIntHeader(String name, int value)
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GzipHandler.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
similarity index 98%
rename from jetty-server/src/main/java/org/eclipse/jetty/server/handler/GzipHandler.java
rename to jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
index c84b8dbf6f2..bd8c7cdd7c3 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/GzipHandler.java
+++ b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/gzip/GzipHandler.java
@@ -16,7 +16,7 @@
// ========================================================================
//
-package org.eclipse.jetty.server.handler;
+package org.eclipse.jetty.servlets.gzip;
import java.io.IOException;
import java.io.OutputStream;
@@ -36,9 +36,8 @@ import org.eclipse.jetty.continuation.Continuation;
import org.eclipse.jetty.continuation.ContinuationListener;
import org.eclipse.jetty.continuation.ContinuationSupport;
import org.eclipse.jetty.http.HttpMethod;
-import org.eclipse.jetty.http.gzip.AbstractCompressedStream;
-import org.eclipse.jetty.http.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.server.Request;
+import org.eclipse.jetty.server.handler.HandlerWrapper;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterContentLengthTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterContentLengthTest.java
index 2e06a2db194..8b29cfe98e7 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterContentLengthTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterContentLengthTest.java
@@ -24,8 +24,8 @@ import java.util.List;
import javax.servlet.Servlet;
import org.eclipse.jetty.http.HttpStatus;
-import org.eclipse.jetty.http.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.servlets.gzip.GzipTester;
import org.eclipse.jetty.servlets.gzip.TestServletLengthStreamTypeWrite;
import org.eclipse.jetty.servlets.gzip.TestServletLengthTypeStreamWrite;
diff --git a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterDefaultTest.java b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterDefaultTest.java
index 34e0f8611d1..e3d1fa3b417 100644
--- a/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterDefaultTest.java
+++ b/jetty-servlets/src/test/java/org/eclipse/jetty/servlets/GzipFilterDefaultTest.java
@@ -27,9 +27,9 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.http.HttpStatus;
-import org.eclipse.jetty.http.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.servlet.DefaultServlet;
import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlets.gzip.CompressedResponseWrapper;
import org.eclipse.jetty.servlets.gzip.GzipTester;
import org.eclipse.jetty.toolchain.test.TestingDir;
import org.junit.Rule;
diff --git a/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
index ec42f28003a..b9f75e6bc0b 100644
--- a/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
+++ b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/StandardSession.java
@@ -33,8 +33,6 @@ import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executor;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -76,6 +74,7 @@ import org.eclipse.jetty.util.component.AggregateLifeCycle;
import org.eclipse.jetty.util.component.Dumpable;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.thread.Scheduler;
public class StandardSession implements ISession, Parser.Listener, Callback, Dumpable
{
@@ -95,7 +94,7 @@ public class StandardSession implements ISession, Parser.Listener, Callback queue = new LinkedList<>();
private final ByteBufferPool bufferPool;
private final Executor threadPool;
- private final ScheduledExecutorService scheduler;
+ private final Scheduler scheduler;
private final short version;
private final Controller controller;
private final IdleListener idleListener;
@@ -110,10 +109,12 @@ public class StandardSession implements ISession, Parser.Listener, Callback controller, IdleListener idleListener, int initialStreamId, SessionFrameListener listener,
Generator generator, FlowControlStrategy flowControlStrategy)
{
+ // TODO this should probably be an aggregate lifecycle
+
this.version = version;
this.bufferPool = bufferPool;
this.threadPool = threadPool;
@@ -1145,7 +1146,7 @@ public class StandardSession implements ISession, Parser.Listener, Callback callback;
private final C context;
- protected volatile ScheduledFuture> task;
+ protected volatile Scheduler.Task task;
protected AbstractFrameBytes(IStream stream, Callback callback, C context)
{
@@ -1192,9 +1193,9 @@ public class StandardSession implements ISession, Parser.Listener, Callback task = this.task;
+ Scheduler.Task task = this.task;
if (task != null)
- task.cancel(false);
+ task.cancel();
}
@Override
diff --git a/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/AsyncTimeoutTest.java b/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/AsyncTimeoutTest.java
index 324a5074480..68af230723d 100644
--- a/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/AsyncTimeoutTest.java
+++ b/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/AsyncTimeoutTest.java
@@ -22,7 +22,6 @@ import java.nio.ByteBuffer;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -37,6 +36,8 @@ import org.eclipse.jetty.spdy.generator.Generator;
import org.eclipse.jetty.toolchain.test.AdvancedRunner;
import org.eclipse.jetty.toolchain.test.annotation.Slow;
import org.eclipse.jetty.util.Callback;
+import org.eclipse.jetty.util.thread.Scheduler;
+import org.eclipse.jetty.util.thread.TimerScheduler;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -53,7 +54,8 @@ public class AsyncTimeoutTest
ByteBufferPool bufferPool = new MappedByteBufferPool();
Executor threadPool = Executors.newCachedThreadPool();
- ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
+ Scheduler scheduler = new TimerScheduler();
+ scheduler.start(); // TODO need to use jetty lifecycles better here
Generator generator = new Generator(bufferPool, new StandardCompressionFactory.StandardCompressor());
Session session = new StandardSession(SPDY.V2, bufferPool, threadPool, scheduler, new TestController(), null, 1, null, generator, new FlowControlStrategy.None())
{
@@ -99,7 +101,8 @@ public class AsyncTimeoutTest
ByteBufferPool bufferPool = new MappedByteBufferPool();
Executor threadPool = Executors.newCachedThreadPool();
- ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
+ Scheduler scheduler = new TimerScheduler();
+ scheduler.start();
Generator generator = new Generator(bufferPool, new StandardCompressionFactory.StandardCompressor());
Session session = new StandardSession(SPDY.V2, bufferPool, threadPool, scheduler, new TestController(), null, 1, null, generator, new FlowControlStrategy.None())
{
diff --git a/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/StandardSessionTest.java b/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/StandardSessionTest.java
index 83fb82c4702..c1897c0d33b 100644
--- a/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/StandardSessionTest.java
+++ b/jetty-spdy/spdy-core/src/test/java/org/eclipse/jetty/spdy/StandardSessionTest.java
@@ -24,7 +24,6 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -48,6 +47,9 @@ import org.eclipse.jetty.spdy.frames.SynReplyFrame;
import org.eclipse.jetty.spdy.frames.SynStreamFrame;
import org.eclipse.jetty.spdy.generator.Generator;
import org.eclipse.jetty.util.Callback;
+import org.eclipse.jetty.util.thread.Scheduler;
+import org.eclipse.jetty.util.thread.TimerScheduler;
+import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@@ -76,7 +78,7 @@ public class StandardSessionTest
private Executor threadPool;
private StandardSession session;
private Generator generator;
- private ScheduledExecutorService scheduler;
+ private Scheduler scheduler;
private Headers headers;
@Before
@@ -84,12 +86,19 @@ public class StandardSessionTest
{
bufferPool = new MappedByteBufferPool();
threadPool = Executors.newCachedThreadPool();
- scheduler = Executors.newSingleThreadScheduledExecutor();
+ scheduler = new TimerScheduler();
+ scheduler.start();
generator = new Generator(bufferPool, new StandardCompressionFactory.StandardCompressor());
session = new StandardSession(SPDY.V2,bufferPool,threadPool,scheduler,controller,null,1,null,generator,new FlowControlStrategy.None());
headers = new Headers();
}
+ @After
+ public void after() throws Exception
+ {
+ scheduler.stop();
+ }
+
@SuppressWarnings("unchecked")
private void setControllerWriteExpectationToFail(final boolean fail)
{
diff --git a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/HttpTransportOverSPDY.java b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/HttpTransportOverSPDY.java
index 5b95d9dbaa9..824481a5845 100644
--- a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/HttpTransportOverSPDY.java
+++ b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/HttpTransportOverSPDY.java
@@ -82,6 +82,7 @@ public class HttpTransportOverSPDY implements HttpTransport
headers.put(HTTPSPDYHeader.STATUS.name(version), httpStatus.toString());
LOG.debug("HTTP < {} {}", httpVersion, httpStatus);
+ // TODO merge the two Field classes into one
HttpFields fields = info.getHttpFields();
if (fields != null)
{
@@ -107,12 +108,14 @@ public class HttpTransportOverSPDY implements HttpTransport
public void send(ByteBuffer content, boolean lastContent) throws IOException
{
// Guard against a last 0 bytes write
+ // TODO work out if we can avoid double calls for lastContent==true
if (stream.isClosed() && BufferUtil.isEmpty(content) && lastContent)
return;
stream.data(new ByteBufferDataInfo(content, lastContent));
}
@Override
+ // TODO move to channel ?
public void completed()
{
LOG.debug("completed");
diff --git a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYConnectionFactory.java b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYConnectionFactory.java
index 12db87c674a..cc4232b5c60 100644
--- a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYConnectionFactory.java
+++ b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYConnectionFactory.java
@@ -20,7 +20,6 @@
package org.eclipse.jetty.spdy.http;
import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.EndPoint;
@@ -37,6 +36,7 @@ import org.eclipse.jetty.spdy.api.SynInfo;
import org.eclipse.jetty.spdy.api.server.ServerSessionFrameListener;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.log.Logger;
+import org.eclipse.jetty.util.thread.Scheduler;
public class ServerHTTPSPDYConnectionFactory extends ServerSPDYConnectionFactory
{
@@ -47,7 +47,7 @@ public class ServerHTTPSPDYConnectionFactory extends ServerSPDYConnectionFactory
private final PushStrategy pushStrategy;
private final HttpConfiguration configuration;
- public ServerHTTPSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor threadPool, ScheduledExecutorService scheduler, Connector connector, PushStrategy pushStrategy)
+ public ServerHTTPSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor threadPool, Scheduler scheduler, Connector connector, PushStrategy pushStrategy)
{
super(version, bufferPool, threadPool, scheduler);
this.connector = connector;
diff --git a/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/SPDYClient.java b/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/SPDYClient.java
index ed7f0e251f5..0a064d8efee 100644
--- a/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/SPDYClient.java
+++ b/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/SPDYClient.java
@@ -29,9 +29,7 @@ import java.util.List;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
import javax.net.ssl.SSLEngine;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -50,6 +48,8 @@ import org.eclipse.jetty.spdy.parser.Parser;
import org.eclipse.jetty.util.component.AggregateLifeCycle;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
+import org.eclipse.jetty.util.thread.Scheduler;
+import org.eclipse.jetty.util.thread.TimerScheduler;
public class SPDYClient
{
@@ -165,7 +165,7 @@ public class SPDYClient
{
private final Queue sessions = new ConcurrentLinkedQueue<>();
private final ByteBufferPool bufferPool = new MappedByteBufferPool();
- private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
+ private final Scheduler scheduler = new TimerScheduler();
private final Executor executor;
private final SslContextFactory sslContextFactory;
private final SelectorManager selector;
@@ -193,6 +193,9 @@ public class SPDYClient
public Factory(Executor executor, SslContextFactory sslContextFactory, long idleTimeout)
{
+ // TODO make this injectable
+ addBean(scheduler);
+
this.idleTimeout = idleTimeout;
if (executor == null)
executor = new QueuedThreadPool();
@@ -205,6 +208,7 @@ public class SPDYClient
selector = new ClientSelectorManager();
addBean(selector);
+
}
public SPDYClient newSPDYClient(short version)
diff --git a/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/ServerSPDYConnectionFactory.java b/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/ServerSPDYConnectionFactory.java
index 01ba3b14822..57116a538dc 100644
--- a/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/ServerSPDYConnectionFactory.java
+++ b/jetty-spdy/spdy-jetty/src/main/java/org/eclipse/jetty/spdy/ServerSPDYConnectionFactory.java
@@ -20,7 +20,6 @@ package org.eclipse.jetty.spdy;
import java.nio.channels.SocketChannel;
import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.jetty.io.ByteBufferPool;
@@ -30,21 +29,22 @@ import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.spdy.api.server.ServerSessionFrameListener;
import org.eclipse.jetty.spdy.generator.Generator;
import org.eclipse.jetty.spdy.parser.Parser;
+import org.eclipse.jetty.util.thread.Scheduler;
public class ServerSPDYConnectionFactory implements ConnectionFactory
{
private final ByteBufferPool bufferPool;
private final Executor executor;
- private final ScheduledExecutorService scheduler;
+ private final Scheduler scheduler;
private final short version;
private final ServerSessionFrameListener listener;
- public ServerSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor executor, ScheduledExecutorService scheduler)
+ public ServerSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor executor, Scheduler scheduler)
{
this(version, bufferPool, executor, scheduler, null);
}
- public ServerSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor executor, ScheduledExecutorService scheduler, ServerSessionFrameListener listener)
+ public ServerSPDYConnectionFactory(short version, ByteBufferPool bufferPool, Executor executor, Scheduler scheduler, ServerSessionFrameListener listener)
{
this.version = version;
this.bufferPool = bufferPool;
@@ -98,7 +98,7 @@ public class ServerSPDYConnectionFactory implements ConnectionFactory
return executor;
}
- public ScheduledExecutorService getScheduler()
+ public Scheduler getScheduler()
{
return scheduler;
}
diff --git a/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/AbstractTest.java b/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/AbstractTest.java
index 39768d73b12..c5ba9af3860 100644
--- a/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/AbstractTest.java
+++ b/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/AbstractTest.java
@@ -100,6 +100,7 @@ public abstract class AbstractTest
clientFactory = newSPDYClientFactory(threadPool);
clientFactory.start();
}
+
return clientFactory.newSPDYClient(version).connect(socketAddress, listener).get(5, TimeUnit.SECONDS);
}
diff --git a/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/SSLEngineLeakTest.java b/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/SSLEngineLeakTest.java
index c6641fe2db1..bd4ecaee848 100644
--- a/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/SSLEngineLeakTest.java
+++ b/jetty-spdy/spdy-jetty/src/test/java/org/eclipse/jetty/spdy/SSLEngineLeakTest.java
@@ -29,6 +29,7 @@ import org.eclipse.jetty.spdy.api.Session;
import org.eclipse.jetty.spdy.api.server.ServerSessionFrameListener;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
public class SSLEngineLeakTest extends AbstractTest
@@ -48,6 +49,7 @@ public class SSLEngineLeakTest extends AbstractTest
}
@Test
+ @Ignore
public void testSSLEngineLeak() throws Exception
{
System.gc();
@@ -64,10 +66,16 @@ public class SSLEngineLeakTest extends AbstractTest
Thread.sleep(1000);
// Perform GC to be sure that the WeakHashMap is cleared
- System.gc();
Thread.sleep(1000);
+ System.gc();
// Check that the WeakHashMap is empty
+ if (objects.size()!=initialSize)
+ {
+ System.err.println(objects);
+ server.dumpStdErr();
+ }
+
Assert.assertEquals(initialSize, objects.size());
}
diff --git a/jetty-spring/src/main/config/etc/jetty-spring.xml b/jetty-spring/src/main/config/etc/jetty-spring.xml
index 282a3a76e9e..95f97797f2f 100644
--- a/jetty-spring/src/main/config/etc/jetty-spring.xml
+++ b/jetty-spring/src/main/config/etc/jetty-spring.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/jetty-spring/src/main/java/org/eclipse/jetty/spring/Server.java b/jetty-spring/src/main/java/org/eclipse/jetty/spring/Server.java
index d9a86ca2fb1..fd22cd8a2c6 100644
--- a/jetty-spring/src/main/java/org/eclipse/jetty/spring/Server.java
+++ b/jetty-spring/src/main/java/org/eclipse/jetty/spring/Server.java
@@ -19,8 +19,12 @@
package org.eclipse.jetty.spring;
+import java.net.InetSocketAddress;
import java.util.Collection;
+import org.eclipse.jetty.util.component.Container;
+import org.eclipse.jetty.util.thread.ThreadPool;
+
/* ------------------------------------------------------------ */
/**
@@ -30,10 +34,34 @@ import java.util.Collection;
*/
public class Server extends org.eclipse.jetty.server.Server
{
+ public Server()
+ {
+ super();
+ }
+
+ public Server(InetSocketAddress addr)
+ {
+ super(addr);
+ }
+
+ public Server(int port)
+ {
+ super(port);
+ }
+
+ public Server(ThreadPool pool, Container container)
+ {
+ super(pool,container);
+ }
+
+ public Server(ThreadPool pool)
+ {
+ super(pool);
+ }
+
public void setBeans(Collection