Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Wilkins2012-05-09 09:18:20 +0000
committerGreg Wilkins2012-05-09 09:18:20 +0000
commitc1011c54a40b08a59f099c74d80162bde256896a (patch)
tree5814a1e05ddc6e91f4faa9f594c58afd1a1febc2
parent0c81b36e047717c04ace524ece667b9adef2e4df (diff)
downloadorg.eclipse.jetty.project-c1011c54a40b08a59f099c74d80162bde256896a.tar.gz
org.eclipse.jetty.project-c1011c54a40b08a59f099c74d80162bde256896a.tar.xz
org.eclipse.jetty.project-c1011c54a40b08a59f099c74d80162bde256896a.zip
jetty-9 work in progress
-rw-r--r--jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java1
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/AbstractConnector.java631
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Connector.java326
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java5
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java8
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Request.java2
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/Server.java47
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java2
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/AbstractNIOConnector.java47
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java37
-rw-r--r--jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java2
11 files changed, 189 insertions, 919 deletions
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java b/jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java
index 6d1153dc13..a1e6e8ba6d 100644
--- a/jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java
+++ b/jetty-io/src/main/java/org/eclipse/jetty/io/AsyncConnection.java
@@ -2,7 +2,6 @@ package org.eclipse.jetty.io;
public interface AsyncConnection
{
-
public abstract void onClose();
public abstract AsyncEndPoint getEndPoint();
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 3b23f51cc4..d3596b488c 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
@@ -26,12 +26,11 @@ import org.eclipse.jetty.http.HttpScheme;
import org.eclipse.jetty.io.AsyncConnection;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.io.EofException;
+import org.eclipse.jetty.server.Connector.Statistics;
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.statistic.CounterStatistic;
-import org.eclipse.jetty.util.statistic.SampleStatistic;
import org.eclipse.jetty.util.thread.ThreadPool;
/**
@@ -49,7 +48,7 @@ import org.eclipse.jetty.util.thread.ThreadPool;
*/
public abstract class AbstractConnector extends AggregateLifeCycle implements Connector, Dumpable
{
- private static final Logger LOG = Log.getLogger(AbstractConnector.class);
+ static final Logger LOG = Log.getLogger(AbstractConnector.class);
private String _name;
@@ -57,40 +56,18 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
private ThreadPool _threadPool;
private String _host;
private int _port = 0;
- private String _integralScheme = HttpScheme.HTTPS.toString();
- private int _integralPort = 0;
- private String _confidentialScheme = HttpScheme.HTTPS.toString();
- private int _confidentialPort = 0;
private int _acceptQueueSize = 0;
private int _acceptors = 1;
private int _acceptorPriorityOffset = 0;
- private boolean _useDNS;
- private boolean _forwarded;
- private String _hostHeader;
-
- private String _forwardedHostHeader = HttpHeader.X_FORWARDED_HOST.toString();
- private String _forwardedServerHeader = HttpHeader.X_FORWARDED_SERVER.toString();
- private String _forwardedForHeader = HttpHeader.X_FORWARDED_FOR.toString();
- private String _forwardedProtoHeader = HttpHeader.X_FORWARDED_PROTO.toString();
- private String _forwardedCipherSuiteHeader;
- private String _forwardedSslSessionIdHeader;
private boolean _reuseAddress = true;
+ private final Statistics _stats = new ConnectionStatistics();
+
protected int _maxIdleTime = 200000;
- protected int _lowResourceMaxIdleTime = -1;
protected int _soLingerTime = -1;
private transient Thread[] _acceptorThreads;
- private final AtomicLong _statsStartedAt = new AtomicLong(-1L);
-
- /** connections to server */
- private final CounterStatistic _connectionStats = new CounterStatistic();
- /** requests per connection */
- private final SampleStatistic _requestStats = new SampleStatistic();
- /** duration of a connection */
- private final SampleStatistic _connectionDurationStats = new SampleStatistic();
-
/* ------------------------------------------------------------ */
/**
@@ -100,6 +77,13 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
/* ------------------------------------------------------------ */
+ @Override
+ public Statistics getStatistics()
+ {
+ return _stats;
+ }
+
+ /* ------------------------------------------------------------ */
/*
*/
@Override
@@ -109,7 +93,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
/* ------------------------------------------------------------ */
- @Override
public void setServer(Server server)
{
_server = server;
@@ -137,7 +120,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
/* ------------------------------------------------------------ */
/**
*/
- @Override
public void setHost(String host)
{
_host = host;
@@ -153,7 +135,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
/* ------------------------------------------------------------ */
- @Override
public void setPort(int port)
{
_port = port;
@@ -196,7 +177,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
* @param maxIdleTime
* The maxIdleTime to set.
*/
- @Override
public void setMaxIdleTime(int maxIdleTime)
{
_maxIdleTime = maxIdleTime;
@@ -204,25 +184,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
/* ------------------------------------------------------------ */
/**
- * @return Returns the maxIdleTime when resources are low.
- */
- public int getLowResourcesMaxIdleTime()
- {
- return _lowResourceMaxIdleTime;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param maxIdleTime
- * The maxIdleTime to set when resources are low.
- */
- public void setLowResourcesMaxIdleTime(int maxIdleTime)
- {
- _lowResourceMaxIdleTime = maxIdleTime;
- }
-
- /* ------------------------------------------------------------ */
- /**
* @return Returns the soLingerTime.
*/
public int getSoLingerTime()
@@ -359,7 +320,7 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
/* ------------------------------------------------------------ */
- protected void configure(Socket socket) throws IOException
+ protected void configure(Socket socket)
{
try
{
@@ -376,205 +337,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
}
/* ------------------------------------------------------------ */
- @Override
- public void customize(Request request) throws IOException
- {
- if (isForwarded())
- checkForwardedHeaders(request);
- }
-
- /* ------------------------------------------------------------ */
- protected void checkForwardedHeaders(Request request) throws IOException
- {
- HttpFields httpFields = request.getConnection().getRequestFields();
-
- // Do SSL first
- if (getForwardedCipherSuiteHeader()!=null)
- {
- String cipher_suite=httpFields.getStringField(getForwardedCipherSuiteHeader());
- if (cipher_suite!=null)
- request.setAttribute("javax.servlet.request.cipher_suite",cipher_suite);
- }
- if (getForwardedSslSessionIdHeader()!=null)
- {
- String ssl_session_id=httpFields.getStringField(getForwardedSslSessionIdHeader());
- if(ssl_session_id!=null)
- {
- request.setAttribute("javax.servlet.request.ssl_session_id", ssl_session_id);
- request.setScheme(HttpScheme.HTTPS.toString());
- }
- }
-
- // Retrieving headers from the request
- String forwardedHost = getLeftMostFieldValue(httpFields,getForwardedHostHeader());
- String forwardedServer = getLeftMostFieldValue(httpFields,getForwardedServerHeader());
- String forwardedFor = getLeftMostFieldValue(httpFields,getForwardedForHeader());
- String forwardedProto = getLeftMostFieldValue(httpFields,getForwardedProtoHeader());
-
- if (_hostHeader != null)
- {
- // Update host header
- httpFields.put(HttpHeader.HOST.toString(),_hostHeader);
- request.setServerName(null);
- request.setServerPort(-1);
- request.getServerName();
- }
- else if (forwardedHost != null)
- {
- // Update host header
- httpFields.put(HttpHeader.HOST.toString(),forwardedHost);
- request.setServerName(null);
- request.setServerPort(-1);
- request.getServerName();
- }
- else if (forwardedServer != null)
- {
- // Use provided server name
- request.setServerName(forwardedServer);
- }
-
- if (forwardedFor != null)
- {
- request.setRemoteAddr(new InetSocketAddress(forwardedFor,request.getRemotePort()));
- }
-
- if (forwardedProto != null)
- {
- request.setScheme(forwardedProto);
- }
- }
-
- /* ------------------------------------------------------------ */
- protected String getLeftMostFieldValue(HttpFields fields, String header)
- {
- if (header == null)
- return null;
-
- String headerValue = fields.getStringField(header);
-
- if (headerValue == null)
- return null;
-
- int commaIndex = headerValue.indexOf(',');
-
- if (commaIndex == -1)
- {
- // Single value
- return headerValue;
- }
-
- // The left-most value is the farthest downstream client
- return headerValue.substring(0,commaIndex);
- }
-
- /* ------------------------------------------------------------ */
- @Override
- public void persist(EndPoint endpoint) throws IOException
- {
- }
-
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#getConfidentialPort()
- */
- @Override
- public int getConfidentialPort()
- {
- return _confidentialPort;
- }
-
- /* ------------------------------------------------------------ */
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#getConfidentialScheme()
- */
- @Override
- public String getConfidentialScheme()
- {
- return _confidentialScheme;
- }
-
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#isConfidential(org.eclipse.jetty.server .Request)
- */
- @Override
- public boolean isIntegral(Request request)
- {
- return false;
- }
-
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#getConfidentialPort()
- */
- @Override
- public int getIntegralPort()
- {
- return _integralPort;
- }
-
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#getIntegralScheme()
- */
- @Override
- public String getIntegralScheme()
- {
- return _integralScheme;
- }
-
- /* ------------------------------------------------------------ */
- /*
- * @see org.eclipse.jetty.server.Connector#isConfidential(org.eclipse.jetty.server.Request)
- */
- @Override
- public boolean isConfidential(Request request)
- {
- return _forwarded && request.getScheme().equalsIgnoreCase(HttpScheme.HTTPS.toString());
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param confidentialPort
- * The confidentialPort to set.
- */
- public void setConfidentialPort(int confidentialPort)
- {
- _confidentialPort = confidentialPort;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param confidentialScheme
- * The confidentialScheme to set.
- */
- public void setConfidentialScheme(String confidentialScheme)
- {
- _confidentialScheme = confidentialScheme;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param integralPort
- * The integralPort to set.
- */
- public void setIntegralPort(int integralPort)
- {
- _integralPort = integralPort;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param integralScheme
- * The integralScheme to set.
- */
- public void setIntegralScheme(String integralScheme)
- {
- _integralScheme = integralScheme;
- }
-
- /* ------------------------------------------------------------ */
protected abstract void accept(int acceptorID) throws IOException, InterruptedException;
/* ------------------------------------------------------------ */
@@ -582,192 +344,6 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
{
}
- /* ------------------------------------------------------------ */
- @Override
- public boolean getResolveNames()
- {
- return _useDNS;
- }
-
- /* ------------------------------------------------------------ */
- public void setResolveNames(boolean resolve)
- {
- _useDNS = resolve;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Is reverse proxy handling on?
- *
- * @return true if this connector is checking the x-forwarded-for/host/server headers
- */
- public boolean isForwarded()
- {
- return _forwarded;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Set reverse proxy handling. If set to true, then the X-Forwarded headers (or the headers set in their place) are looked for to set the request protocol,
- * host, server and client ip.
- *
- * @param check
- * true if this connector is checking the x-forwarded-for/host/server headers
- * @set {@link #setForwardedForHeader(String)}
- * @set {@link #setForwardedHostHeader(String)}
- * @set {@link #setForwardedProtoHeader(String)}
- * @set {@link #setForwardedServerHeader(String)}
- */
- public void setForwarded(boolean check)
- {
- if (check)
- LOG.debug("{} is forwarded",this);
- _forwarded = check;
- }
-
- /* ------------------------------------------------------------ */
- public String getHostHeader()
- {
- return _hostHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Set a forced valued for the host header to control what is returned by {@link ServletRequest#getServerName()} and {@link ServletRequest#getServerPort()}.
- * This value is only used if {@link #isForwarded()} is true.
- *
- * @param hostHeader
- * The value of the host header to force.
- */
- public void setHostHeader(String hostHeader)
- {
- _hostHeader = hostHeader;
- }
-
- /* ------------------------------------------------------------ */
- /*
- *
- * @see #setForwarded(boolean)
- */
- public String getForwardedHostHeader()
- {
- return _forwardedHostHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param forwardedHostHeader
- * The header name for forwarded hosts (default x-forwarded-host)
- * @see #setForwarded(boolean)
- */
- public void setForwardedHostHeader(String forwardedHostHeader)
- {
- _forwardedHostHeader = forwardedHostHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return the header name for forwarded server.
- * @see #setForwarded(boolean)
- */
- public String getForwardedServerHeader()
- {
- return _forwardedServerHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param forwardedServerHeader
- * The header name for forwarded server (default x-forwarded-server)
- * @see #setForwarded(boolean)
- */
- public void setForwardedServerHeader(String forwardedServerHeader)
- {
- _forwardedServerHeader = forwardedServerHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @see #setForwarded(boolean)
- */
- public String getForwardedForHeader()
- {
- return _forwardedForHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param forwardedRemoteAddressHeader
- * The header name for forwarded for (default x-forwarded-for)
- * @see #setForwarded(boolean)
- */
- public void setForwardedForHeader(String forwardedRemoteAddressHeader)
- {
- _forwardedForHeader = forwardedRemoteAddressHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Get the forwardedProtoHeader.
- *
- * @return the forwardedProtoHeader (default X-Forwarded-For)
- * @see #setForwarded(boolean)
- */
- public String getForwardedProtoHeader()
- {
- return _forwardedProtoHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Set the forwardedProtoHeader.
- *
- * @param forwardedProtoHeader
- * the forwardedProtoHeader to set (default X-Forwarded-For)
- * @see #setForwarded(boolean)
- */
- public void setForwardedProtoHeader(String forwardedProtoHeader)
- {
- _forwardedProtoHeader = forwardedProtoHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return The header name holding a forwarded cipher suite (default null)
- */
- public String getForwardedCipherSuiteHeader()
- {
- return _forwardedCipherSuiteHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param forwardedCipherSuite
- * The header name holding a forwarded cipher suite (default null)
- */
- public void setForwardedCipherSuiteHeader(String forwardedCipherSuite)
- {
- _forwardedCipherSuiteHeader = forwardedCipherSuite;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return The header name holding a forwarded SSL Session ID (default null)
- */
- public String getForwardedSslSessionIdHeader()
- {
- return _forwardedSslSessionIdHeader;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @param forwardedSslSessionId
- * The header name holding a forwarded SSL Session ID (default null)
- */
- public void setForwardedSslSessionIdHeader(String forwardedSslSessionId)
- {
- _forwardedSslSessionIdHeader = forwardedSslSessionId;
- }
/* ------------------------------------------------------------ */
@Override
@@ -865,192 +441,31 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
_name = name;
}
- /* ------------------------------------------------------------ */
- /**
- * @return Get the number of requests handled by this connector since last call of statsReset(). If setStatsOn(false) then this is undefined.
- */
- @Override
- public int getRequests()
- {
- return (int)_requestStats.getTotal();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Returns the connectionsDurationTotal.
- */
- @Override
- public long getConnectionsDurationTotal()
- {
- return _connectionDurationStats.getTotal();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Number of connections accepted by the server since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public int getConnections()
- {
- return (int)_connectionStats.getTotal();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Number of connections currently open that were opened since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public int getConnectionsOpen()
- {
- return (int)_connectionStats.getCurrent();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum number of connections opened simultaneously since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public int getConnectionsOpenMax()
- {
- return (int)_connectionStats.getMax();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Mean duration in milliseconds of open connections since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public double getConnectionsDurationMean()
- {
- return _connectionDurationStats.getMean();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum duration in milliseconds of an open connection since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public long getConnectionsDurationMax()
- {
- return _connectionDurationStats.getMax();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Standard deviation of duration in milliseconds of open connections since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public double getConnectionsDurationStdDev()
- {
- return _connectionDurationStats.getStdDev();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Mean number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public double getConnectionsRequestsMean()
- {
- return _requestStats.getMean();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public int getConnectionsRequestsMax()
- {
- return (int)_requestStats.getMax();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Standard deviation of number of requests per connection since statsReset() called. Undefined if setStatsOn(false).
- */
- @Override
- public double getConnectionsRequestsStdDev()
- {
- return _requestStats.getStdDev();
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Reset statistics.
- */
- @Override
- public void statsReset()
- {
- updateNotEqual(_statsStartedAt,-1,System.currentTimeMillis());
-
- _requestStats.reset();
- _connectionStats.reset();
- _connectionDurationStats.reset();
- }
-
- /* ------------------------------------------------------------ */
- @Override
- public void setStatsOn(boolean on)
- {
- if (on && _statsStartedAt.get() != -1)
- return;
-
- if (LOG.isDebugEnabled())
- LOG.debug("Statistics on = " + on + " for " + this);
-
- statsReset();
- _statsStartedAt.set(on?System.currentTimeMillis():-1);
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return True if statistics collection is turned on.
- */
- @Override
- public boolean getStatsOn()
- {
- return _statsStartedAt.get() != -1;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * @return Timestamp stats were started at.
- */
- @Override
- public long getStatsOnMs()
- {
- long start = _statsStartedAt.get();
-
- return (start != -1)?(System.currentTimeMillis() - start):0;
- }
-
+
+
/* ------------------------------------------------------------ */
protected void connectionOpened(AsyncConnection connection)
{
- if (_statsStartedAt.get() == -1)
- return;
-
- _connectionStats.increment();
+ _stats.connectionOpened();
}
/* ------------------------------------------------------------ */
protected void connectionUpgraded(AsyncConnection oldConnection, AsyncConnection newConnection)
{
- _requestStats.set((oldConnection instanceof HttpConnection)?((HttpConnection)oldConnection).getHttpChannel().getRequests():0);
+ long duration = System.currentTimeMillis() - oldConnection.getEndPoint().getCreatedTimeStamp();
+ int requests = (oldConnection instanceof HttpConnection)?((HttpConnection)oldConnection).getHttpChannel().getRequests():0;
+ _stats.connectionUpgraded(duration,requests,requests);
}
/* ------------------------------------------------------------ */
protected void connectionClosed(AsyncConnection connection)
{
- if (_statsStartedAt.get() == -1)
- return;
-
+
long duration = System.currentTimeMillis() - connection.getEndPoint().getCreatedTimeStamp();
int requests = (connection instanceof HttpConnection)?((HttpConnection)connection).getHttpChannel().getRequests():0;
- _requestStats.set(requests);
- _connectionStats.decrement();
- _connectionDurationStats.set(duration);
+
+ _stats.connectionClosed(duration,requests,requests);
+
}
/* ------------------------------------------------------------ */
@@ -1096,7 +511,7 @@ public abstract class AbstractConnector extends AggregateLifeCycle implements Co
/* ------------------------------------------------------------ */
- private void updateNotEqual(AtomicLong valueHolder, long compare, long value)
+ void updateNotEqual(AtomicLong valueHolder, long compare, long value)
{
long oldValue = valueHolder.get();
while (compare != oldValue)
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 1797239e4e..8f76ef4406 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
@@ -15,6 +15,7 @@ package org.eclipse.jetty.server;
import java.io.IOException;
+import org.eclipse.jetty.io.ByteBufferPool;
import org.eclipse.jetty.io.EndPoint;
import org.eclipse.jetty.util.component.LifeCycle;
@@ -28,12 +29,6 @@ import org.eclipse.jetty.util.component.LifeCycle;
* will set itself as both the ThreadPool and the Handler. Note that a connector
* can be used without a Server if a thread pool and handler are directly provided.
*
- *
- *
- */
-/**
- * @author gregw
- *
*/
public interface Connector extends LifeCycle
{
@@ -54,70 +49,10 @@ public interface Connector extends LifeCycle
void close() throws IOException;
/* ------------------------------------------------------------ */
- void setServer(Server server);
-
- /* ------------------------------------------------------------ */
Server getServer();
/* ------------------------------------------------------------ */
- /**
- * @return The port to use when redirecting a request if a data constraint of integral is
- * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()}
- */
- int getIntegralPort();
-
- /* ------------------------------------------------------------ */
- /**
- * @return The schema to use when redirecting a request if a data constraint of integral is
- * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()}
- */
- String getIntegralScheme();
-
- /* ------------------------------------------------------------ */
- /**
- * @param request A request
- * @return true if the request is integral. This normally means the https schema has been used.
- */
- boolean isIntegral(Request request);
-
- /* ------------------------------------------------------------ */
- /**
- * @return The port to use when redirecting a request if a data constraint of confidential is
- * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()}
- */
- int getConfidentialPort();
-
-
- /* ------------------------------------------------------------ */
- /**
- * @return The schema to use when redirecting a request if a data constraint of confidential is
- * required. See {@link org.eclipse.jetty.util.security.Constraint#getDataConstraint()}
- */
- String getConfidentialScheme();
-
- /* ------------------------------------------------------------ */
- /**
- * @param request A request
- * @return true if the request is confidential. This normally means the https schema has been used.
- */
- boolean isConfidential(Request request);
-
- /* ------------------------------------------------------------ */
- /** Customize a request for an endpoint.
- * Called on every request to allow customization of the request for
- * the particular endpoint (eg security properties from a SSL connection).
- * @param request
- * @throws IOException
- */
- void customize(Request request) throws IOException;
-
- /* ------------------------------------------------------------ */
- /** Persist an endpoint.
- * Called after every request if the connection is to remain open.
- * @param endpoint
- * @throws IOException
- */
- void persist(EndPoint endpoint) throws IOException;
+ ByteBufferPool getByteBufferPool();
/* ------------------------------------------------------------ */
/**
@@ -128,21 +63,6 @@ public interface Connector extends LifeCycle
/* ------------------------------------------------------------ */
/**
- * Set the hostname of the interface to bind to.
- * @param hostname The hostname representing the interface to which
- * this connector will bind, or null for all interfaces.
- */
- void setHost(String hostname);
-
- /* ------------------------------------------------------------ */
- /**
- * @param port The port fto listen of for connections or 0 if any available
- * port may be used.
- */
- void setPort(int port);
-
- /* ------------------------------------------------------------ */
- /**
* @return The configured port for the connector or 0 if any available
* port may be used.
*/
@@ -161,124 +81,144 @@ public interface Connector extends LifeCycle
*/
int getMaxIdleTime();
- /**
- * @param ms Max Idle time for connections in milliseconds
- */
- void setMaxIdleTime(int ms);
-
/* ------------------------------------------------------------ */
/**
* @return the underlying socket, channel, buffer etc. for the connector.
*/
Object getConnection();
-
-
- /* ------------------------------------------------------------ */
- /**
- * @return true if names resolution should be done.
- */
- boolean getResolveNames();
-
-
-
- /* ------------------------------------------------------------ */
- /**
- * @return Get the number of requests handled by this connector
- * since last call of statsReset(). If setStatsOn(false) then this
- * is undefined.
- */
- public int getRequests();
-
- /* ------------------------------------------------------------ */
- /**
- * @return Returns the connectionsDurationTotal.
- */
- public long getConnectionsDurationTotal();
-
- /* ------------------------------------------------------------ */
- /**
- * @return Number of connections accepted by the server since
- * statsReset() called. Undefined if setStatsOn(false).
- */
- public int getConnections() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Number of connections currently open that were opened
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public int getConnectionsOpen() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum number of connections opened simultaneously
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public int getConnectionsOpenMax() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum duration in milliseconds of an open connection
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public long getConnectionsDurationMax();
- /* ------------------------------------------------------------ */
- /**
- * @return Mean duration in milliseconds of open connections
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public double getConnectionsDurationMean() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Standard deviation of duration in milliseconds of
- * open connections since statsReset() called. Undefined if
- * setStatsOn(false).
- */
- public double getConnectionsDurationStdDev() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Mean number of requests per connection
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public double getConnectionsRequestsMean() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Standard Deviation of number of requests per connection
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public double getConnectionsRequestsStdDev() ;
-
- /* ------------------------------------------------------------ */
- /**
- * @return Maximum number of requests per connection
- * since statsReset() called. Undefined if setStatsOn(false).
- */
- public int getConnectionsRequestsMax();
-
- /* ------------------------------------------------------------ */
- /** Reset statistics.
- */
- public void statsReset();
-
- /* ------------------------------------------------------------ */
- public void setStatsOn(boolean on);
/* ------------------------------------------------------------ */
- /**
- * @return True if statistics collection is turned on.
- */
- public boolean getStatsOn();
-
- /* ------------------------------------------------------------ */
- /**
- * @return Timestamp stats were started at.
- */
- public long getStatsOnMs();
-
-
+ Statistics getStatistics();
+
+
+ interface Statistics extends LifeCycle
+ {
+ /* ------------------------------------------------------------ */
+ /**
+ * @return True if statistics collection is turned on.
+ */
+ boolean getStatsOn();
+
+ /* ------------------------------------------------------------ */
+ /** Reset statistics.
+ */
+ void statsReset();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Get the number of messages received by this connector
+ * since last call of statsReset(). If setStatsOn(false) then this
+ * is undefined.
+ */
+ public int getMessagesIn();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Get the number of messages sent by this connector
+ * since last call of statsReset(). If setStatsOn(false) then this
+ * is undefined.
+ */
+ public int getMessagesOut();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Get the number of bytes received by this connector
+ * since last call of statsReset(). If setStatsOn(false) then this
+ * is undefined.
+ */
+ public int getBytesIn();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Get the number of bytes sent by this connector
+ * since last call of statsReset(). If setStatsOn(false) then this
+ * is undefined.
+ */
+ public int getBytesOut();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Returns the connectionsDurationTotal.
+ */
+ public long getConnectionsDurationTotal();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Number of connections accepted by the server since
+ * statsReset() called. Undefined if setStatsOn(false).
+ */
+ public int getConnections() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Number of connections currently open that were opened
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public int getConnectionsOpen() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Maximum number of connections opened simultaneously
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public int getConnectionsOpenMax() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Maximum duration in milliseconds of an open connection
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public long getConnectionsDurationMax();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Mean duration in milliseconds of open connections
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public double getConnectionsDurationMean() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Standard deviation of duration in milliseconds of
+ * open connections since statsReset() called. Undefined if
+ * setStatsOn(false).
+ */
+ public double getConnectionsDurationStdDev() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Mean number of messages received per connection
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public double getConnectionsMessagesInMean() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Standard Deviation of number of messages received per connection
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public double getConnectionsMessagesInStdDev() ;
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Maximum number of messages received per connection
+ * since statsReset() called. Undefined if setStatsOn(false).
+ */
+ public int getConnectionsMessagesInMax();
+
+ /* ------------------------------------------------------------ */
+ /**
+ * @return Timestamp stats were started at.
+ */
+ public long getStatsOnMs();
+
+ void connectionOpened();
+
+ void connectionUpgraded(long duration, int requests, int requests2);
+
+ void connectionClosed(long duration, int requests, int requests2);
+
+ }
}
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 1ea53843fe..419c2c9217 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
@@ -341,7 +341,7 @@ public abstract class HttpChannel
if (_async.isInitial())
{
_request.setDispatcherType(DispatcherType.REQUEST);
- getConnector().customize(_request);
+ getHttpConnector().customize(_request);
server.handle(this);
}
else
@@ -837,9 +837,8 @@ public abstract class HttpChannel
}
}
-
- public abstract Connector getConnector();
+ public abstract HttpConnector getHttpConnector();
public abstract long getMaxIdleTime();
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
index cfc55214ae..e468e945c4 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpConnection.java
@@ -50,7 +50,7 @@ public class HttpConnection extends AbstractAsyncConnection
private final Lock _lock = new ReentrantLock();
private final Server _server;
- private final Connector _connector;
+ private final HttpConnector _connector;
private final HttpParser _parser;
private final HttpGenerator _generator;
private final HttpChannel _channel;
@@ -81,11 +81,11 @@ public class HttpConnection extends AbstractAsyncConnection
/** Constructor
*
*/
- public HttpConnection(Connector connector, AsyncEndPoint endpoint, Server server)
+ public HttpConnection(HttpConnector connector, AsyncEndPoint endpoint, Server server)
{
super(endpoint);
_connector = connector;
- _bufferPool=_connector.getBufferPool();
+ _bufferPool=_connector.getByteBufferPool();
_server = server;
@@ -611,7 +611,7 @@ public class HttpConnection extends AbstractAsyncConnection
}
@Override
- public Connector getConnector()
+ public HttpConnector getHttpConnector()
{
return _connector;
}
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 e30ad553bf..8ef86a9f87 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
@@ -1370,7 +1370,7 @@ public class Request implements HttpServletRequest
@Override
public boolean isSecure()
{
- return _channel.getConnector().isConfidential(this);
+ return _channel.getHttpConnector().isConfidential(this);
}
/* ------------------------------------------------------------ */
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 9dfe46a07a..6c2a0d9d8f 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
@@ -94,7 +94,7 @@ public class Server extends HandlerWrapper implements Attributes
{
setServer(this);
- Connector connector=new SelectChannelConnector();
+ SelectChannelConnector connector=new SelectChannelConnector();
connector.setPort(port);
setConnectors(new Connector[]{connector});
}
@@ -107,7 +107,7 @@ public class Server extends HandlerWrapper implements Attributes
{
setServer(this);
- Connector connector=new SelectChannelConnector();
+ SelectChannelConnector connector=new SelectChannelConnector();
connector.setHost(addr.getHostName());
connector.setPort(addr.getPort());
setConnectors(new Connector[]{connector});
@@ -180,7 +180,11 @@ public class Server extends HandlerWrapper implements Attributes
if (connectors!=null)
{
for (int i=0;i<connectors.length;i++)
- connectors[i].setServer(this);
+ {
+ // TODO review
+ if (connectors[i] instanceof AbstractConnector)
+ ((AbstractConnector)connectors[i]).setServer(this);
+ }
}
_container.update(this, _connectors, connectors, "connector");
@@ -474,18 +478,6 @@ public class Server extends HandlerWrapper implements Attributes
_maxCookieVersion = maxCookieVersion;
}
- /* ------------------------------------------------------------ */
- /**
- * Add a LifeCycle object to be started/stopped
- * along with the Server.
- * @deprecated Use {@link #addBean(Object)}
- * @param c
- */
- @Deprecated
- public void addLifeCycle (LifeCycle c)
- {
- addBean(c);
- }
/* ------------------------------------------------------------ */
/**
@@ -507,17 +499,6 @@ public class Server extends HandlerWrapper implements Attributes
return false;
}
- /**
- * Remove a LifeCycle object to be started/stopped
- * along with the Server
- * @deprecated Use {@link #removeBean(Object)}
- */
- @Deprecated
- public void removeLifeCycle (LifeCycle c)
- {
- removeBean(c);
- }
-
/* ------------------------------------------------------------ */
/**
* Remove an associated bean.
@@ -537,8 +518,12 @@ public class Server extends HandlerWrapper implements Attributes
/*
* @see org.eclipse.util.AttributesMap#clearAttributes()
*/
+ @Override
public void clearAttributes()
{
+ Enumeration names = _attributes.getAttributeNames();
+ while (names.hasMoreElements())
+ removeBean(_attributes.getAttribute((String)names.nextElement()));
_attributes.clearAttributes();
}
@@ -546,6 +531,7 @@ public class Server extends HandlerWrapper implements Attributes
/*
* @see org.eclipse.util.AttributesMap#getAttribute(java.lang.String)
*/
+ @Override
public Object getAttribute(String name)
{
return _attributes.getAttribute(name);
@@ -555,6 +541,7 @@ public class Server extends HandlerWrapper implements Attributes
/*
* @see org.eclipse.util.AttributesMap#getAttributeNames()
*/
+ @Override
public Enumeration getAttributeNames()
{
return AttributesMap.getAttributeNamesCopy(_attributes);
@@ -564,8 +551,12 @@ public class Server extends HandlerWrapper implements Attributes
/*
* @see org.eclipse.util.AttributesMap#removeAttribute(java.lang.String)
*/
+ @Override
public void removeAttribute(String name)
{
+ Object bean=_attributes.getAttribute(name);
+ if (bean!=null)
+ removeBean(bean);
_attributes.removeAttribute(name);
}
@@ -573,8 +564,10 @@ public class Server extends HandlerWrapper implements Attributes
/*
* @see org.eclipse.util.AttributesMap#setAttribute(java.lang.String, java.lang.Object)
*/
+ @Override
public void setAttribute(String name, Object attribute)
{
+ addBean(attribute);
_attributes.setAttribute(name, attribute);
}
@@ -617,7 +610,6 @@ public class Server extends HandlerWrapper implements Attributes
dump(out,indent,TypeUtil.asList(getHandlers()),getBeans(),TypeUtil.asList(_connectors));
}
-
/* ------------------------------------------------------------ */
public boolean isUncheckedPrintWriter()
{
@@ -630,7 +622,6 @@ public class Server extends HandlerWrapper implements Attributes
_uncheckedPrintWriter=unchecked;
}
-
/* ------------------------------------------------------------ */
/* A handler that can be gracefully shutdown.
* Called by doStop if a {@link #setGracefulShutdown} period is set.
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 31e8c94a9d..ab6303feef 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
@@ -878,7 +878,7 @@ public class ContextHandler extends ScopedHandler implements Attributes, Server.
// Check the connector
if (_connectors != null && _connectors.size() > 0)
{
- String connector = HttpChannel.getCurrentHttpChannel().getConnector().getName();
+ String connector = HttpChannel.getCurrentHttpChannel().getHttpConnector().getName();
if (connector == null || !_connectors.contains(connector))
return false;
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/AbstractNIOConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/nio/AbstractNIOConnector.java
deleted file mode 100644
index 8192bd9862..0000000000
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/AbstractNIOConnector.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// ========================================================================
-// Copyright (c) 2004-2009 Mort Bay Consulting Pty. Ltd.
-// ------------------------------------------------------------------------
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v1.0
-// and Apache License v2.0 which accompanies this distribution.
-// The Eclipse Public License is available at
-// http://www.eclipse.org/legal/epl-v10.html
-// The Apache License v2.0 is available at
-// http://www.opensource.org/licenses/apache2.0.php
-// You may elect to redistribute this code under either of these licenses.
-// ========================================================================
-
-/**
- *
- */
-package org.eclipse.jetty.server.nio;
-
-import org.eclipse.jetty.server.AbstractConnector;
-
-public abstract class AbstractNIOConnector extends AbstractConnector implements NIOConnector
-{
- public AbstractNIOConnector()
- {
- _buffers.setRequestBufferType(Type.DIRECT);
- _buffers.setRequestHeaderType(Type.INDIRECT);
- _buffers.setResponseBufferType(Type.DIRECT);
- _buffers.setResponseHeaderType(Type.INDIRECT);
- }
-
- /* ------------------------------------------------------------------------------- */
- public boolean getUseDirectBuffers()
- {
- return getRequestBufferType()==Type.DIRECT;
- }
-
- /* ------------------------------------------------------------------------------- */
- /**
- * @param direct If True (the default), the connector can use NIO direct buffers.
- * Some JVMs have memory management issues (bugs) with direct buffers.
- */
- public void setUseDirectBuffers(boolean direct)
- {
- _buffers.setRequestBufferType(direct?Type.DIRECT:Type.INDIRECT);
- _buffers.setResponseBufferType(direct?Type.DIRECT:Type.INDIRECT);
- }
-}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
index d288814984..c9f735e544 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/nio/SelectChannelConnector.java
@@ -26,6 +26,7 @@ import org.eclipse.jetty.io.AsyncEndPoint;
import org.eclipse.jetty.io.SelectChannelEndPoint;
import org.eclipse.jetty.io.SelectorManager;
import org.eclipse.jetty.io.SelectorManager.SelectSet;
+import org.eclipse.jetty.server.AbstractHttpConnector;
import org.eclipse.jetty.server.HttpConnection;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.util.thread.ThreadPool;
@@ -56,7 +57,7 @@ import org.eclipse.jetty.util.thread.ThreadPool;
*
* @org.apache.xbean.XBean element="nioConnector" description="Creates an NIO based socket connector"
*/
-public class SelectChannelConnector extends AbstractNIOConnector
+public class SelectChannelConnector extends AbstractHttpConnector
{
protected ServerSocketChannel _acceptChannel;
private int _lowResourcesConnections;
@@ -198,32 +199,6 @@ public class SelectChannelConnector extends AbstractNIOConnector
}
/* ------------------------------------------------------------ */
- /**
- * @return the lowResourcesMaxIdleTime
- */
- @Override
- public int getLowResourcesMaxIdleTime()
- {
- return _lowResourcesMaxIdleTime;
- }
-
- /* ------------------------------------------------------------ */
- /**
- * Set the period in ms that a connection is allowed to be idle when this there are more
- * than {@link #getLowResourcesConnections()} connections. This allows the server to rapidly close idle connections
- * in order to gracefully handle high load situations.
- * @param lowResourcesMaxIdleTime the period in ms that a connection is allowed to be idle when resources are low.
- * @see #setMaxIdleTime(int)
- */
- @Override
- public void setLowResourcesMaxIdleTime(int lowResourcesMaxIdleTime)
- {
- _lowResourcesMaxIdleTime=lowResourcesMaxIdleTime;
- super.setLowResourcesMaxIdleTime(lowResourcesMaxIdleTime);
- }
-
-
- /* ------------------------------------------------------------ */
/*
* @see org.eclipse.jetty.server.server.AbstractConnector#doStart()
*/
@@ -232,8 +207,6 @@ public class SelectChannelConnector extends AbstractNIOConnector
{
_manager.setSelectSets(getAcceptors());
_manager.setMaxIdleTime(getMaxIdleTime());
- _manager.setLowResourcesConnections(getLowResourcesConnections());
- _manager.setLowResourcesMaxIdleTime(getLowResourcesMaxIdleTime());
super.doStart();
}
@@ -249,7 +222,7 @@ public class SelectChannelConnector extends AbstractNIOConnector
/* ------------------------------------------------------------------------------- */
protected void endPointClosed(AsyncEndPoint endpoint)
{
- connectionClosed(endpoint.getSelectableConnection());
+ connectionClosed(endpoint.getAsyncConnection());
}
/* ------------------------------------------------------------------------------- */
@@ -283,13 +256,13 @@ public class SelectChannelConnector extends AbstractNIOConnector
protected void endPointOpened(SelectChannelEndPoint endpoint)
{
// TODO handle max connections and low resources
- connectionOpened(endpoint.getSelectableConnection());
+ connectionOpened(endpoint.getAsyncConnection());
}
@Override
protected void endPointUpgraded(SelectChannelEndPoint endpoint, AsyncConnection oldConnection)
{
- connectionUpgraded(oldConnection,endpoint.getSelectableConnection());
+ connectionUpgraded(oldConnection,endpoint.getAsyncConnection());
}
@Override
diff --git a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java
index c5e7b707ff..3992d74845 100644
--- a/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java
+++ b/jetty-spdy/spdy-jetty-http/src/main/java/org/eclipse/jetty/spdy/http/ServerHTTPSPDYAsyncConnection.java
@@ -418,7 +418,7 @@ public class ServerHTTPSPDYAsyncConnection extends AbstractHttpConnection implem
@Override
public void completed(Stream pushStream)
{
- Synchronous pushConnection = new Synchronous(getConnector(), getEndPoint(), getServer(), connection, pushStrategy, pushStream);
+ Synchronous pushConnection = new Synchronous(getHttpConnector(), getEndPoint(), getServer(), connection, pushStrategy, pushStream);
pushConnection.beginRequest(pushHeaders, true);
}
});

Back to the top