org.eclipse.jetty.server
Class HttpConnection
java.lang.Object
org.eclipse.jetty.io.AbstractConnection
org.eclipse.jetty.server.HttpConnection
- All Implemented Interfaces:
- org.eclipse.jetty.io.Connection
public class HttpConnection
- extends org.eclipse.jetty.io.AbstractConnection
- implements org.eclipse.jetty.io.Connection
A HttpConnection represents the connection of a HTTP client to the server
and is created by an instance of a Connector
. It's prime function is
to associate Request
and Response
instances with a EndPoint
.
A connection is also the prime mechanism used by jetty to recycle objects without
pooling. The Request
, Response
, HttpParser
, HttpGenerator
and HttpFields
instances are all recycled for the duraction of
a connection. Where appropriate, allocated buffers are also kept associated
with the connection via the parser and/or generator.
The connection state is held by 3 separate state machines: The request state, the
response state and the continuation state. All three state machines must be driven
to completion for every request, and all three can complete in any order.
The HttpConnection support protocol upgrade. If on completion of a request, the
response code is 101 (switch protocols), then the org.eclipse.jetty.io.Connection
request attribute is checked to see if there is a new Connection instance. If so,
the new connection is returned from handle()
and is used for future
handling of the underlying connection. Note that for switching protocols that
don't use 101 responses (eg CONNECT), the response should be sent and then the
status code changed to 101 before returning from the handler. Implementors
of new Connection types should be careful to extract any buffered data from
(HttpParser)http.getParser()).getHeaderBuffer() and
(HttpParser)http.getParser()).getBodyBuffer() to initialise their new connection.
Fields inherited from class org.eclipse.jetty.io.AbstractConnection |
_endp |
Methods inherited from class org.eclipse.jetty.io.AbstractConnection |
getEndPoint, getTimeStamp, idleExpired, toString |
Methods inherited from interface org.eclipse.jetty.io.Connection |
getTimeStamp, idleExpired |
_connector
protected final Connector _connector
_server
protected final Server _server
_uri
protected final HttpURI _uri
_parser
protected final Parser _parser
_requestFields
protected final HttpFields _requestFields
_request
protected final Request _request
_in
protected javax.servlet.ServletInputStream _in
_generator
protected final Generator _generator
_responseFields
protected final HttpFields _responseFields
_response
protected final Response _response
_out
protected HttpConnection.Output _out
_writer
protected HttpConnection.OutputWriter _writer
_printWriter
protected PrintWriter _printWriter
HttpConnection
public HttpConnection(Connector connector,
org.eclipse.jetty.io.EndPoint endpoint,
Server server)
- Constructor
HttpConnection
protected HttpConnection(Connector connector,
org.eclipse.jetty.io.EndPoint endpoint,
Server server,
Parser parser,
Generator generator,
Request request)
getCurrentConnection
public static HttpConnection getCurrentConnection()
setCurrentConnection
protected static void setCurrentConnection(HttpConnection connection)
getParser
public Parser getParser()
- Returns:
- the parser used by this connection
getRequests
public int getRequests()
- Returns:
- the number of requests handled by this connection
getServer
public Server getServer()
getAssociatedObject
public Object getAssociatedObject()
- Returns:
- Returns the associatedObject.
setAssociatedObject
public void setAssociatedObject(Object associatedObject)
- Parameters:
associatedObject
- The associatedObject to set.
getConnector
public Connector getConnector()
- Returns:
- Returns the connector.
getRequestFields
public HttpFields getRequestFields()
- Returns:
- Returns the requestFields.
getResponseFields
public HttpFields getResponseFields()
- Returns:
- Returns the responseFields.
isConfidential
public boolean isConfidential(Request request)
- Returns:
- The result of calling
getConnector()
.isCondidential
(request), or false
if there is no connector.
isIntegral
public boolean isIntegral(Request request)
- Find out if the request is INTEGRAL security.
- Parameters:
request
-
- Returns:
true
if there is a connector
and it considers request
to be integral
getResolveNames
public boolean getResolveNames()
- Returns:
false
(this method is not yet implemented)
getRequest
public Request getRequest()
- Returns:
- Returns the request.
getResponse
public Response getResponse()
- Returns:
- Returns the response.
getInputStream
public javax.servlet.ServletInputStream getInputStream()
throws IOException
- Get the inputStream from the connection.
If the associated response has the Expect header set to 100 Continue,
then accessing the input stream indicates that the handler/servlet
is ready for the request body and thus a 100 Continue response is sent.
- Returns:
- The input stream for this connection.
The stream will be created if it does not already exist.
- Throws:
IOException
getOutputStream
public javax.servlet.ServletOutputStream getOutputStream()
- Returns:
- The output stream for this connection. The stream will be created if it does not already exist.
getPrintWriter
public PrintWriter getPrintWriter(String encoding)
- Returns:
- A
PrintWriter
wrapping the output stream
. The writer is created if it
does not already exist.
isResponseCommitted
public boolean isResponseCommitted()
handle
public org.eclipse.jetty.io.Connection handle()
throws IOException
- Specified by:
handle
in interface org.eclipse.jetty.io.Connection
- Throws:
IOException
scheduleTimeout
public void scheduleTimeout(org.eclipse.jetty.util.thread.Timeout.Task task,
long timeoutMs)
cancelTimeout
public void cancelTimeout(org.eclipse.jetty.util.thread.Timeout.Task task)
reset
public void reset(boolean returnBuffers)
handleRequest
protected void handleRequest()
throws IOException
- Throws:
IOException
commitResponse
public void commitResponse(boolean last)
throws IOException
- Throws:
IOException
completeResponse
public void completeResponse()
throws IOException
- Throws:
IOException
flushResponse
public void flushResponse()
throws IOException
- Throws:
IOException
getGenerator
public Generator getGenerator()
isIncluding
public boolean isIncluding()
include
public void include()
included
public void included()
isIdle
public boolean isIdle()
- Specified by:
isIdle
in interface org.eclipse.jetty.io.Connection
isSuspended
public boolean isSuspended()
- Specified by:
isSuspended
in interface org.eclipse.jetty.io.Connection
- See Also:
Connection.isSuspended()
closed
public void closed()
- Specified by:
closed
in interface org.eclipse.jetty.io.Connection
isExpecting100Continues
public boolean isExpecting100Continues()
isExpecting102Processing
public boolean isExpecting102Processing()
Copyright © 1995-2011 Mort Bay Consulting. All Rights Reserved.