|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.http.nio.protocol.HttpAsyncService
@Contract(threading=IMMUTABLE_CONDITIONAL) public class HttpAsyncService
HttpAsyncService
is a fully asynchronous HTTP server side protocol
handler based on the non-blocking (NIO) I/O model.
HttpAsyncServerProtocolHandler
translates individual events fired
through the NHttpServerEventHandler
interface into logically related
HTTP message exchanges.
Upon receiving an incoming request HttpAsyncService
verifies
the message for compliance with the server expectations using
HttpAsyncExpectationVerifier
, if provided, and then
HttpAsyncRequestHandlerMapper
is used to map the request
to a particular HttpAsyncRequestHandler
intended to handle
the request with the given URI. The protocol handler uses the selected
HttpAsyncRequestHandler
instance to process the incoming request
and to generate an outgoing response.
HttpAsyncService
relies on HttpProcessor
to generate
mandatory protocol headers for all outgoing messages and apply common,
cross-cutting message transformations to all incoming and outgoing messages,
whereas individual HttpAsyncRequestHandler
s are expected
to implement application specific content generation and processing.
Individual HttpAsyncRequestHandler
s do not have to submit a response
immediately. They can defer transmission of an HTTP response back to
the client without blocking the I/O thread by delegating the process of
request handling to another service or a worker thread. HTTP response can
be submitted as a later a later point of time once response content becomes
available.
Method Summary | |
---|---|
void |
closed(NHttpServerConnection conn)
Triggered when the connection is closed. |
void |
connected(NHttpServerConnection conn)
Triggered when a new incoming connection is created. |
protected HttpResponse |
createHttpResponse(int status,
HttpContext context)
|
void |
endOfInput(NHttpServerConnection conn)
Triggered when the connection is closed by the opposite end point (half-closed). |
void |
exception(NHttpServerConnection conn,
Exception cause)
Triggered if an error occurs during the HTTP exchange. |
ConnectionReuseStrategy |
getConnectionStrategy()
Gets the ConnectionReuseStrategy for this service. |
ExceptionLogger |
getExceptionLogger()
Gets the ExceptionLogger for this service. |
HttpAsyncExpectationVerifier |
getExpectationVerifier()
Gets the HttpAsyncExpectationVerifier for this service. |
HttpAsyncRequestHandlerMapper |
getHandlerMapper()
Gets the HttpAsyncRequestHandlerMapper for this service. |
HttpProcessor |
getHttpProcessor()
Gets the HttpProcessor for this service. |
HttpResponseFactory |
getResponseFactory()
Gets the HttpResponseFactory for this service. |
protected void |
handleAlreadySubmittedResponse(Cancellable cancellable,
HttpContext context)
This method can be used to handle callback set up happened after response submission. |
protected void |
handleAlreadySubmittedResponse(HttpAsyncResponseProducer responseProducer,
HttpContext context)
This method can be used to handle double response submission. |
protected HttpAsyncResponseProducer |
handleException(Exception ex,
HttpContext context)
|
void |
inputReady(NHttpServerConnection conn,
ContentDecoder decoder)
Triggered when the underlying channel is ready for reading a new portion of the request entity through the corresponding content decoder. |
protected void |
log(Exception ex)
This method can be used to log I/O exception thrown while closing Closeable objects (such as
HttpConnection ). |
void |
outputReady(NHttpServerConnection conn,
ContentEncoder encoder)
Triggered when the underlying channel is ready for writing a next portion of the response entity through the corresponding content encoder. |
void |
requestReceived(NHttpServerConnection conn)
Triggered when a new HTTP request is received. |
void |
responseReady(NHttpServerConnection conn)
Triggered when the connection is ready to accept a new HTTP response. |
void |
timeout(NHttpServerConnection conn)
Triggered when no input is detected on this connection over the maximum period of inactivity. |
protected int |
toStatusCode(Exception ex,
HttpContext context)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
@Deprecated public HttpAsyncService(HttpProcessor httpProcessor, ConnectionReuseStrategy connStrategy, HttpResponseFactory responseFactory, HttpAsyncRequestHandlerResolver handlerResolver, HttpAsyncExpectationVerifier expectationVerifier, HttpParams params)
HttpAsyncService(HttpProcessor,
ConnectionReuseStrategy, HttpResponseFactory, HttpAsyncRequestHandlerMapper,
HttpAsyncExpectationVerifier)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor (required).connStrategy
- Connection re-use strategy (required).responseFactory
- HTTP response factory (required).handlerResolver
- Request handler resolver.expectationVerifier
- Request expectation verifier (optional).params
- HTTP parameters (required).@Deprecated public HttpAsyncService(HttpProcessor httpProcessor, ConnectionReuseStrategy connStrategy, HttpAsyncRequestHandlerResolver handlerResolver, HttpParams params)
HttpAsyncService(HttpProcessor,
ConnectionReuseStrategy, HttpResponseFactory, HttpAsyncRequestHandlerMapper,
HttpAsyncExpectationVerifier)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor (required).connStrategy
- Connection re-use strategy (required).handlerResolver
- Request handler resolver.params
- HTTP parameters (required).public HttpAsyncService(HttpProcessor httpProcessor, ConnectionReuseStrategy connStrategy, HttpResponseFactory responseFactory, HttpAsyncRequestHandlerMapper handlerMapper, HttpAsyncExpectationVerifier expectationVerifier)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor.connStrategy
- Connection re-use strategy. If null
DefaultConnectionReuseStrategy.INSTANCE
will be used.responseFactory
- HTTP response factory. If null
DefaultHttpResponseFactory.INSTANCE
will be used.handlerMapper
- Request handler mapper.expectationVerifier
- Request expectation verifier. May be null
.public HttpAsyncService(HttpProcessor httpProcessor, ConnectionReuseStrategy connStrategy, HttpResponseFactory responseFactory, HttpAsyncRequestHandlerMapper handlerMapper, HttpAsyncExpectationVerifier expectationVerifier, ExceptionLogger exceptionLogger)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor.connStrategy
- Connection re-use strategy. If null
DefaultConnectionReuseStrategy.INSTANCE
will be used.responseFactory
- HTTP response factory. If null
DefaultHttpResponseFactory.INSTANCE
will be used.handlerMapper
- Request handler mapper.expectationVerifier
- Request expectation verifier. May be null
.exceptionLogger
- Exception logger. If null
ExceptionLogger.NO_OP
will be used. Please note that the exception
logger will be only used to log I/O exception thrown while closing
Closeable
objects (such as HttpConnection
).public HttpAsyncService(HttpProcessor httpProcessor, HttpAsyncRequestHandlerMapper handlerMapper)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor.handlerMapper
- Request handler mapper.public HttpAsyncService(HttpProcessor httpProcessor, HttpAsyncRequestHandlerMapper handlerMapper, ExceptionLogger exceptionLogger)
HttpAsyncServerProtocolHandler
.
httpProcessor
- HTTP protocol processor.handlerMapper
- Request handler mapper.exceptionLogger
- Exception logger. If null
ExceptionLogger.NO_OP
will be used. Please note that the exception
logger will be only used to log I/O exception thrown while closing
Closeable
objects (such as HttpConnection
).Method Detail |
---|
public void connected(NHttpServerConnection conn)
NHttpServerEventHandler
connected
in interface NHttpServerEventHandler
conn
- new incoming connection HTTP connection.public void closed(NHttpServerConnection conn)
NHttpServerEventHandler
closed
in interface NHttpServerEventHandler
conn
- closed HTTP connection.public void exception(NHttpServerConnection conn, Exception cause)
NHttpServerEventHandler
exception
in interface NHttpServerEventHandler
conn
- HTTP connection that caused an I/O errorcause
- exceptionprotected HttpResponse createHttpResponse(int status, HttpContext context)
public void requestReceived(NHttpServerConnection conn) throws IOException, HttpException
NHttpServerEventHandler
If the request received encloses a request entity this method will
be followed a series of
NHttpServerEventHandler.inputReady(NHttpServerConnection, ContentDecoder)
calls
to transfer the request content.
requestReceived
in interface NHttpServerEventHandler
conn
- HTTP connection that contains a new HTTP request
IOException
HttpException
NHttpServerConnection
public void inputReady(NHttpServerConnection conn, ContentDecoder decoder) throws IOException, HttpException
NHttpServerEventHandler
If the content consumer is unable to process incoming content,
input event notifications can be temporarily suspended using
IOControl
interface (super interface of NHttpServerConnection
).
Please note that the NHttpServerConnection
and ContentDecoder
objects are not thread-safe and should only be used within the context of
this method call. The IOControl
object can be shared and used on other
thread to resume input event notifications when the handler is capable of
processing more content.
inputReady
in interface NHttpServerEventHandler
conn
- HTTP connection that can produce a new portion of the
incoming request content.decoder
- The content decoder to use to read content.
IOException
HttpException
NHttpServerConnection
,
ContentDecoder
,
IOControl
public void responseReady(NHttpServerConnection conn) throws IOException, HttpException
NHttpServerEventHandler
responseReady
in interface NHttpServerEventHandler
conn
- HTTP connection that contains an HTTP response
IOException
HttpException
NHttpServerConnection
public void outputReady(NHttpServerConnection conn, ContentEncoder encoder) throws HttpException, IOException
NHttpServerEventHandler
If the content producer is unable to generate outgoing content,
output event notifications can be temporarily suspended using
IOControl
interface (super interface of NHttpServerConnection
).
Please note that the NHttpServerConnection
and ContentEncoder
objects are not thread-safe and should only be used within the context of
this method call. The IOControl
object can be shared and used on other
thread to resume output event notifications when more content is made available.
outputReady
in interface NHttpServerEventHandler
conn
- HTTP connection that can accommodate a new portion
of the outgoing response content.encoder
- The content encoder to use to write content.
HttpException
IOException
NHttpServerConnection
,
ContentEncoder
,
IOControl
public void endOfInput(NHttpServerConnection conn) throws IOException
NHttpServerEventHandler
endOfInput
in interface NHttpServerEventHandler
conn
- half-closed HTTP connection.
IOException
public void timeout(NHttpServerConnection conn) throws IOException
NHttpServerEventHandler
timeout
in interface NHttpServerEventHandler
conn
- HTTP connection that caused timeout condition.
IOException
protected void log(Exception ex)
Closeable
objects (such as
HttpConnection
).
ex
- I/O exception thrown by Closeable.close()
protected HttpAsyncResponseProducer handleException(Exception ex, HttpContext context)
protected int toStatusCode(Exception ex, HttpContext context)
protected void handleAlreadySubmittedResponse(Cancellable cancellable, HttpContext context)
cancellable
- Request cancellation callback.context
- Request context.protected void handleAlreadySubmittedResponse(HttpAsyncResponseProducer responseProducer, HttpContext context)
responseProducer
- Response producer for second response.context
- Request context.public HttpResponseFactory getResponseFactory()
public HttpProcessor getHttpProcessor()
public ConnectionReuseStrategy getConnectionStrategy()
public HttpAsyncRequestHandlerMapper getHandlerMapper()
public HttpAsyncExpectationVerifier getExpectationVerifier()
public ExceptionLogger getExceptionLogger()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |