Class ClientHandler
- java.lang.Object
-
- org.apache.synapse.transport.nhttp.ClientHandler
-
- All Implemented Interfaces:
org.apache.http.nio.NHttpClientEventHandler
public class ClientHandler extends Object implements org.apache.http.nio.NHttpClientEventHandler
The client connection handler. An instance of this class is used by each IOReactor, to process every connection. Hence this class should not store any data related to a single connection - as this is being shared.
-
-
Field Summary
Fields Modifier and Type Field Description static StringATTACHMENT_KEYstatic StringAXIS2_HTTP_REQUESTstatic StringCLIENT_CONNECTION_DEBUGstatic StringCONNECTION_CREATION_TIMEstatic StringOUTGOING_MESSAGE_CONTEXTstatic StringREQUEST_SOURCE_BUFFERstatic StringRESPONSE_SINK_BUFFERstatic StringTUNNEL_HANDLER
-
Constructor Summary
Constructors Constructor Description ClientHandler(ConnectionPool connpool, ClientConnFactory connFactory, ProxyConfig proxyConfig, org.apache.axis2.context.ConfigurationContext cfgCtx, org.apache.http.params.HttpParams params, NhttpMetricsCollector metrics)Create an instance of this client connection handler using the Axis2 configuration context and Http protocol parameters given
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclosed(org.apache.http.nio.NHttpClientConnection conn)Handle connection close eventsvoidconnected(org.apache.http.nio.NHttpClientConnection conn, Object attachment)Invoked when the destination is connectedvoidendOfInput(org.apache.http.nio.NHttpClientConnection conn)voidexception(org.apache.http.nio.NHttpClientConnection conn, Exception ex)Handle IO errors while reading or writing to underlying channelsvoidexception(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.HttpException e)Handle Http protocol violations encountered while reading from underlying channelsvoidexecute(Runnable task)intgetActiveCount()intgetQueueSize()voidinputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentDecoder decoder)Process ready input (i.e.protected voidmarkRequestCompletedWithError(Axis2HttpRequest axis2Request, int errorCode, String errorMessage, Exception exceptionToRaise)Mark request to send failed with errorvoidoutputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentEncoder encoder)Process ready output (i.e.voidrequestReady(org.apache.http.nio.NHttpClientConnection conn)voidresetConnectionPool(Set<String> hostList)Shutdown the connections of the given host:port list.voidresponseReceived(org.apache.http.nio.NHttpClientConnection conn)Process a response received for the request sent outvoidsetConnFactory(ClientConnFactory connFactory)Set the given Client Connection Factory.voidstop()voidsubmitRequest(org.apache.http.nio.NHttpClientConnection conn, Axis2HttpRequest axis2Req)Submit a new request over an already established connection, which has been 'kept alive'voidtimeout(org.apache.http.nio.NHttpClientConnection conn)Handle connection timeouts by shutting down the connections.
-
-
-
Field Detail
-
ATTACHMENT_KEY
public static final String ATTACHMENT_KEY
- See Also:
- Constant Field Values
-
TUNNEL_HANDLER
public static final String TUNNEL_HANDLER
- See Also:
- Constant Field Values
-
OUTGOING_MESSAGE_CONTEXT
public static final String OUTGOING_MESSAGE_CONTEXT
- See Also:
- Constant Field Values
-
AXIS2_HTTP_REQUEST
public static final String AXIS2_HTTP_REQUEST
- See Also:
- Constant Field Values
-
CLIENT_CONNECTION_DEBUG
public static final String CLIENT_CONNECTION_DEBUG
- See Also:
- Constant Field Values
-
CONNECTION_CREATION_TIME
public static final String CONNECTION_CREATION_TIME
- See Also:
- Constant Field Values
-
REQUEST_SOURCE_BUFFER
public static final String REQUEST_SOURCE_BUFFER
- See Also:
- Constant Field Values
-
RESPONSE_SINK_BUFFER
public static final String RESPONSE_SINK_BUFFER
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ClientHandler
public ClientHandler(ConnectionPool connpool, ClientConnFactory connFactory, ProxyConfig proxyConfig, org.apache.axis2.context.ConfigurationContext cfgCtx, org.apache.http.params.HttpParams params, NhttpMetricsCollector metrics) throws org.apache.axis2.AxisFault
Create an instance of this client connection handler using the Axis2 configuration context and Http protocol parameters given- Parameters:
cfgCtx- the Axis2 configuration contextparams- the Http protocol parameters to adhere tometrics- statistics collection metrics- Throws:
org.apache.axis2.AxisFault
-
-
Method Detail
-
requestReady
public void requestReady(org.apache.http.nio.NHttpClientConnection conn) throws IOException, org.apache.http.HttpException- Specified by:
requestReadyin interfaceorg.apache.http.nio.NHttpClientEventHandler- Throws:
IOExceptionorg.apache.http.HttpException
-
submitRequest
public void submitRequest(org.apache.http.nio.NHttpClientConnection conn, Axis2HttpRequest axis2Req) throws org.apache.http.ConnectionClosedExceptionSubmit a new request over an already established connection, which has been 'kept alive'- Parameters:
conn- the connection to use to send the request, which has been kept openaxis2Req- the new request- Throws:
org.apache.http.ConnectionClosedException- if the connection is closed by the other party
-
connected
public void connected(org.apache.http.nio.NHttpClientConnection conn, Object attachment)Invoked when the destination is connected- Specified by:
connectedin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- the connection being processedattachment- the attachment set previously
-
closed
public void closed(org.apache.http.nio.NHttpClientConnection conn)
Handle connection close events- Specified by:
closedin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- HTTP connection to be closed
-
timeout
public void timeout(org.apache.http.nio.NHttpClientConnection conn)
Handle connection timeouts by shutting down the connections. These are established that have reached the SO_TIMEOUT of the socket- Specified by:
timeoutin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- the connection being processed
-
exception
public void exception(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.HttpException e)Handle Http protocol violations encountered while reading from underlying channels- Parameters:
conn- the connection being processede- the exception encountered
-
exception
public void exception(org.apache.http.nio.NHttpClientConnection conn, Exception ex)Handle IO errors while reading or writing to underlying channels- Specified by:
exceptionin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- the connection being processedex- the exception encountered
-
endOfInput
public void endOfInput(org.apache.http.nio.NHttpClientConnection conn) throws IOException- Specified by:
endOfInputin interfaceorg.apache.http.nio.NHttpClientEventHandler- Throws:
IOException
-
markRequestCompletedWithError
protected void markRequestCompletedWithError(Axis2HttpRequest axis2Request, int errorCode, String errorMessage, Exception exceptionToRaise)
Mark request to send failed with error- Parameters:
axis2Request- the Axis2HttpRequest to be marked as completed with an errorerrorCode- the error code to raiseerrorMessage- the text for an error message to be returned to the MR on failureexceptionToRaise- an Exception to be returned to the MR on failure
-
inputReady
public void inputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentDecoder decoder)Process ready input (i.e. response from remote server)- Specified by:
inputReadyin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- connection being processeddecoder- the content decoder in use
-
outputReady
public void outputReady(org.apache.http.nio.NHttpClientConnection conn, org.apache.http.nio.ContentEncoder encoder)Process ready output (i.e. write request to remote server)- Specified by:
outputReadyin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- the connection being processedencoder- the encoder in use
-
responseReceived
public void responseReceived(org.apache.http.nio.NHttpClientConnection conn)
Process a response received for the request sent out- Specified by:
responseReceivedin interfaceorg.apache.http.nio.NHttpClientEventHandler- Parameters:
conn- the connection being processed
-
execute
public void execute(Runnable task)
-
getActiveCount
public int getActiveCount()
-
getQueueSize
public int getQueueSize()
-
stop
public void stop()
-
setConnFactory
public void setConnFactory(ClientConnFactory connFactory)
Set the given Client Connection Factory.- Parameters:
connFactory- ClientConnectionFactory instance
-
-