Package io.undertow.server.protocol.ajp
Class AjpServerConnection
- java.lang.Object
-
- io.undertow.util.AbstractAttachable
-
- io.undertow.server.ServerConnection
-
- io.undertow.server.AbstractServerConnection
-
- io.undertow.server.protocol.ajp.AjpServerConnection
-
- All Implemented Interfaces:
Attachable,Closeable,AutoCloseable,Channel,InterruptibleChannel,org.xnio.channels.BoundChannel,org.xnio.channels.CloseableChannel,org.xnio.channels.Configurable,org.xnio.channels.ConnectedChannel
public final class AjpServerConnection extends AbstractServerConnection
A server-side AJP connection.- Author:
- David M. Lloyd
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.undertow.server.AbstractServerConnection
AbstractServerConnection.ConduitState
-
Nested classes/interfaces inherited from class io.undertow.server.ServerConnection
ServerConnection.CloseListener
-
-
Field Summary
-
Fields inherited from class io.undertow.server.AbstractServerConnection
bufferPool, channel, closeListeners, closeSetter, current, extraBytes, originalSinkConduit, originalSourceConduit, rootHandler, undertowOptions
-
-
Constructor Summary
Constructors Constructor Description AjpServerConnection(org.xnio.StreamConnection channel, ByteBufferPool bufferPool, HttpHandler rootHandler, org.xnio.OptionMap undertowOptions, int bufferSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearChannel()Resets the channel to its original state, effectively disabling all current conduit wrappers.protected voidexchangeComplete(HttpServerExchange exchange)Invoked when the exchange is complete.protected org.xnio.conduits.StreamSinkConduitgetSinkConduit(HttpServerExchange exchange, org.xnio.conduits.StreamSinkConduit conduit)Gets the sink conduit that should be used for this request.SSLSessionInfogetSslSessionInfo()Gets SSL information about the connection.StringgetTransportProtocol()Returns a string representation describing the protocol used to transmit messages on this connection.protected booleanisConnectSupported()booleanisContinueResponseSupported()booleanisRequestTrailerFieldsSupported()protected booleanisUpgradeSupported()AbstractServerConnection.ConduitStateresetChannel()Resets the channel to its original state, effectively disabling all current conduit wrappers.voidrestoreChannel(AbstractServerConnection.ConduitState state)Restores the channel conduits to a previous state.HttpServerExchangesendOutOfBandResponse(HttpServerExchange exchange)Sends an out of band response, such as a HTTP 100-continue response.protected voidsetConnectListener(HttpUpgradeListener connectListener)voidsetSslSessionInfo(SSLSessionInfo sessionInfo)Sets the current SSL information.voidterminateRequestChannel(HttpServerExchange exchange)Invoked when the exchange is complete, and there is still data in the request channel.protected org.xnio.StreamConnectionupgradeChannel()Upgrade the connection, if allowed-
Methods inherited from class io.undertow.server.AbstractServerConnection
addCloseListener, close, getBufferPool, getBufferSize, getByteBufferPool, getChannel, getCloseSetter, getExtraBytes, getIoThread, getLocalAddress, getLocalAddress, getOption, getOriginalSinkConduit, getOriginalSourceConduit, getPeerAddress, getPeerAddress, getRootHandler, getSinkChannel, getSourceChannel, getUndertowOptions, getWorker, isOpen, maxEntitySizeUpdated, setExtraBytes, setOption, setUpgradeListener, sink, source, supportsOption
-
Methods inherited from class io.undertow.server.ServerConnection
getId, getProtocolRequestId, getSslSession, isPushSupported, pushResource, pushResource
-
Methods inherited from class io.undertow.util.AbstractAttachable
addToAttachmentList, createAttachmentMap, getAttachment, getAttachmentList, putAttachment, removeAttachment
-
-
-
-
Constructor Detail
-
AjpServerConnection
public AjpServerConnection(org.xnio.StreamConnection channel, ByteBufferPool bufferPool, HttpHandler rootHandler, org.xnio.OptionMap undertowOptions, int bufferSize)
-
-
Method Detail
-
sendOutOfBandResponse
public HttpServerExchange sendOutOfBandResponse(HttpServerExchange exchange)
Description copied from class:ServerConnectionSends an out of band response, such as a HTTP 100-continue response. WARNING: do not attempt to write to the current exchange until the out of band exchange has been fully written. Doing so may have unexpected results. TODO: this needs more thought.- Specified by:
sendOutOfBandResponsein classServerConnection- Parameters:
exchange- The current exchange- Returns:
- The out of band exchange.
-
isContinueResponseSupported
public boolean isContinueResponseSupported()
- Specified by:
isContinueResponseSupportedin classServerConnection- Returns:
trueif this connection supports sending a 100-continue response
-
terminateRequestChannel
public void terminateRequestChannel(HttpServerExchange exchange)
Description copied from class:ServerConnectionInvoked when the exchange is complete, and there is still data in the request channel. Some implementations (such as SPDY and HTTP2) have more efficient ways to drain the request than simply reading all data (e.g. RST_STREAM). After this method is invoked the stream will be drained normally.- Specified by:
terminateRequestChannelin classServerConnection- Parameters:
exchange- The current exchange.
-
restoreChannel
public void restoreChannel(AbstractServerConnection.ConduitState state)
Description copied from class:AbstractServerConnectionRestores the channel conduits to a previous state.- Overrides:
restoreChannelin classAbstractServerConnection- Parameters:
state- The original state- See Also:
AbstractServerConnection.resetChannel()
-
resetChannel
public AbstractServerConnection.ConduitState resetChannel()
Description copied from class:AbstractServerConnectionResets the channel to its original state, effectively disabling all current conduit wrappers. The current state is encapsulated inside aAbstractServerConnection.ConduitStateobject that can be used the restore the channel.- Overrides:
resetChannelin classAbstractServerConnection- Returns:
- An opaque representation of the previous channel state
-
clearChannel
public void clearChannel()
Description copied from class:AbstractServerConnectionResets the channel to its original state, effectively disabling all current conduit wrappers. The current state is lost.- Overrides:
clearChannelin classAbstractServerConnection
-
getSslSessionInfo
public SSLSessionInfo getSslSessionInfo()
Description copied from class:ServerConnectionGets SSL information about the connection. This could represent the actual client connection, or could be providing SSL information that was provided by a front end proxy.- Specified by:
getSslSessionInfoin classServerConnection- Returns:
- SSL information about the connection
-
setSslSessionInfo
public void setSslSessionInfo(SSLSessionInfo sessionInfo)
Description copied from class:ServerConnectionSets the current SSL information. This can be used by handlers to setup SSL information that was provided by a front end proxy. If this is being set of a per request basis then you must ensure that it is either cleared by an exchange completion listener at the end of the request, or is always set for every request. Otherwise it is possible to SSL information to 'leak' between requests.- Specified by:
setSslSessionInfoin classServerConnection- Parameters:
sessionInfo- The ssl session information
-
upgradeChannel
protected org.xnio.StreamConnection upgradeChannel()
Description copied from class:ServerConnectionUpgrade the connection, if allowed- Specified by:
upgradeChannelin classServerConnection- Returns:
- The StreamConnection that should be passed to the upgrade handler
-
getSinkConduit
protected org.xnio.conduits.StreamSinkConduit getSinkConduit(HttpServerExchange exchange, org.xnio.conduits.StreamSinkConduit conduit)
Description copied from class:ServerConnectionGets the sink conduit that should be used for this request. This allows the connection to apply any per-request conduit wrapping that is required, without adding to the response wrappers array. There is no corresponding method for source conduits, as in general conduits can be directly inserted into the connection after the request has been read.- Specified by:
getSinkConduitin classServerConnection- Returns:
- The source conduit
-
isUpgradeSupported
protected boolean isUpgradeSupported()
- Specified by:
isUpgradeSupportedin classServerConnection- Returns:
- true if this connection supports HTTP upgrade
-
isConnectSupported
protected boolean isConnectSupported()
- Specified by:
isConnectSupportedin classServerConnection- Returns:
trueif this connection supports the HTTP CONNECT verb
-
exchangeComplete
protected void exchangeComplete(HttpServerExchange exchange)
Description copied from class:ServerConnectionInvoked when the exchange is complete.- Specified by:
exchangeCompletein classServerConnection
-
setConnectListener
protected void setConnectListener(HttpUpgradeListener connectListener)
- Specified by:
setConnectListenerin classServerConnection
-
getTransportProtocol
public String getTransportProtocol()
Description copied from class:ServerConnectionReturns a string representation describing the protocol used to transmit messages on this connection.- Specified by:
getTransportProtocolin classServerConnection- Returns:
- the transport protocol
-
isRequestTrailerFieldsSupported
public boolean isRequestTrailerFieldsSupported()
- Specified by:
isRequestTrailerFieldsSupportedin classServerConnection
-
-