Apache Tomcat 7.0.37

org.apache.coyote.ajp
Class AbstractAjpProcessor<S>

java.lang.Object
  extended by org.apache.coyote.AbstractProcessor<S>
      extended by org.apache.coyote.ajp.AbstractAjpProcessor<S>
All Implemented Interfaces:
ActionHook, Processor<S>
Direct Known Subclasses:
AjpAprProcessor, AjpNioProcessor, AjpProcessor

public abstract class AbstractAjpProcessor<S>
extends AbstractProcessor<S>

Base class for AJP Processor implementations.


Nested Class Summary
protected  class AbstractAjpProcessor.SocketInputBuffer
          This class is an input buffer which will read its data from an input stream.
protected  class AbstractAjpProcessor.SocketOutputBuffer
          This class is an output buffer which will write data to an output stream.
 
Field Summary
protected  MessageBytes bodyBytes
          Body message.
protected  AjpMessage bodyMessage
          Body message.
protected  long bytesWritten
          Bytes written to client for the current request.
protected  MessageBytes certificates
          Byte chunk for certs.
protected  String clientCertProvider
          When client certificate information is presented in a form other than instances of X509Certificate it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion.
protected  boolean empty
          Body empty flag.
protected static byte[] endAndCloseMessageArray
           
protected static byte[] endMessageArray
          End message array.
protected  boolean endOfStream
          End of stream flag.
protected  boolean error
          Error flag.
protected  boolean finished
          Finished response.
protected  boolean first
          First read.
protected static byte[] flushMessageArray
          Flush message array.
protected  byte[] getBodyMessageArray
          GetBody message array.
protected  char[] hostNameC
          Host name (used to avoid useless B2C conversion on the host name).
protected  int keepAliveTimeout
          The number of milliseconds Tomcat will wait for a subsequent request before closing the connection.
protected  int packetSize
          AJP packet size.
protected static byte[] pongMessageArray
          Pong message array.
protected  boolean replay
          Replay read.
protected  AjpMessage requestHeaderMessage
          Header message.
protected  String requiredSecret
          Required secret.
protected  AjpMessage responseMessage
          Message used for response composition.
protected static StringManager sm
          The string manager for this package.
protected  MessageBytes tmpMB
          Temp message bytes used for processing.
protected  boolean tomcatAuthentication
          Use Tomcat authentication ?
 
Fields inherited from class org.apache.coyote.AbstractProcessor
adapter, asyncStateMachine, endpoint, request, response
 
Constructor Summary
AbstractAjpProcessor(int packetSize, AbstractEndpoint endpoint)
           
 
Method Summary
 void action(ActionCode actionCode, Object param)
          Send an action to the connector.
protected abstract  void actionInternal(ActionCode actionCode, Object param)
           
 AbstractEndpoint.Handler.SocketState asyncDispatch(SocketStatus status)
          Process in-progress Servlet 3.0 Async requests.
 AbstractEndpoint.Handler.SocketState event(SocketStatus status)
          Process in-progress Comet requests.
protected  void finish()
          Finish AJP response.
protected  void flush(boolean explicit)
          Callback to write data from the buffer.
 String getClientCertProvider()
           
 int getKeepAliveTimeout()
           
protected abstract  Log getLog()
           
 boolean getTomcatAuthentication()
           
 UpgradeInbound getUpgradeInbound()
           
 boolean isComet()
           
 boolean isUpgrade()
           
protected abstract  void output(byte[] src, int offset, int length)
           
protected  void parseHost(MessageBytes valueMB)
          Parse host.
protected  void prepareRequest()
          After reading the request headers, we have to setup the request filters.
protected  void prepareResponse()
          When committing the response, we have to validate the set of headers, as well as setup the response filters.
protected abstract  boolean receive()
           
 void recycle(boolean socketClosing)
          Recycle the processor, ready for the next request which may be on the same connection or a different connection.
protected  boolean refillReadBuffer()
          Get more request body data from the web server and store it in the internal buffer.
 void setClientCertProvider(String s)
           
 void setKeepAliveTimeout(int timeout)
           
 void setRequiredSecret(String requiredSecret)
           
 void setSslSupport(SSLSupport sslSupport)
           
 void setTomcatAuthentication(boolean tomcatAuthentication)
           
 AbstractEndpoint.Handler.SocketState upgradeDispatch()
          Processes data received on a connection that has been through an HTTP upgrade.
 
Methods inherited from class org.apache.coyote.AbstractProcessor
asyncPostProcess, getAdapter, getEndpoint, getExecutor, getRequest, isAsync, process, setAdapter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sm

protected static final StringManager sm
The string manager for this package.


endMessageArray

protected static final byte[] endMessageArray
End message array.


endAndCloseMessageArray

protected static final byte[] endAndCloseMessageArray

flushMessageArray

protected static final byte[] flushMessageArray
Flush message array.


pongMessageArray

protected static final byte[] pongMessageArray
Pong message array.


getBodyMessageArray

protected final byte[] getBodyMessageArray
GetBody message array. Not static like the other message arrays since the message varies with packetSize and that can vary per connector.


packetSize

protected int packetSize
AJP packet size.


requestHeaderMessage

protected AjpMessage requestHeaderMessage
Header message. Note that this header is merely the one used during the processing of the first message of a "request", so it might not be a request header. It will stay unchanged during the processing of the whole request.


responseMessage

protected AjpMessage responseMessage
Message used for response composition.


bodyMessage

protected AjpMessage bodyMessage
Body message.


bodyBytes

protected MessageBytes bodyBytes
Body message.


error

protected boolean error
Error flag.


hostNameC

protected char[] hostNameC
Host name (used to avoid useless B2C conversion on the host name).


tmpMB

protected MessageBytes tmpMB
Temp message bytes used for processing.


certificates

protected MessageBytes certificates
Byte chunk for certs.


endOfStream

protected boolean endOfStream
End of stream flag.


empty

protected boolean empty
Body empty flag.


first

protected boolean first
First read.


replay

protected boolean replay
Replay read.


finished

protected boolean finished
Finished response.


bytesWritten

protected long bytesWritten
Bytes written to client for the current request.


keepAliveTimeout

protected int keepAliveTimeout
The number of milliseconds Tomcat will wait for a subsequent request before closing the connection. The default is the same as for Apache HTTP Server (15 000 milliseconds).


tomcatAuthentication

protected boolean tomcatAuthentication
Use Tomcat authentication ?


requiredSecret

protected String requiredSecret
Required secret.


clientCertProvider

protected String clientCertProvider
When client certificate information is presented in a form other than instances of X509Certificate it needs to be converted before it can be used and this property controls which JSSE provider is used to perform the conversion. For example it is used with the AJP connectors, the HTTP APR connector and with the SSLValve. If not specified, the default provider will be used.

Constructor Detail

AbstractAjpProcessor

public AbstractAjpProcessor(int packetSize,
                            AbstractEndpoint endpoint)
Method Detail

getLog

protected abstract Log getLog()

getKeepAliveTimeout

public int getKeepAliveTimeout()

setKeepAliveTimeout

public void setKeepAliveTimeout(int timeout)

getTomcatAuthentication

public boolean getTomcatAuthentication()

setTomcatAuthentication

public void setTomcatAuthentication(boolean tomcatAuthentication)

setRequiredSecret

public void setRequiredSecret(String requiredSecret)

getClientCertProvider

public String getClientCertProvider()

setClientCertProvider

public void setClientCertProvider(String s)

action

public final void action(ActionCode actionCode,
                         Object param)
Send an action to the connector.

Parameters:
actionCode - Type of the action
param - Action parameter

asyncDispatch

public AbstractEndpoint.Handler.SocketState asyncDispatch(SocketStatus status)
Description copied from class: AbstractProcessor
Process in-progress Servlet 3.0 Async requests. These will start as HTTP requests.

Specified by:
asyncDispatch in interface Processor<S>
Specified by:
asyncDispatch in class AbstractProcessor<S>

setSslSupport

public void setSslSupport(SSLSupport sslSupport)

event

public AbstractEndpoint.Handler.SocketState event(SocketStatus status)
                                           throws IOException
Description copied from class: AbstractProcessor
Process in-progress Comet requests. These will start as HTTP requests.

Specified by:
event in interface Processor<S>
Specified by:
event in class AbstractProcessor<S>
Throws:
IOException

upgradeDispatch

public AbstractEndpoint.Handler.SocketState upgradeDispatch()
                                                     throws IOException
Description copied from class: AbstractProcessor
Processes data received on a connection that has been through an HTTP upgrade.

Specified by:
upgradeDispatch in interface Processor<S>
Specified by:
upgradeDispatch in class AbstractProcessor<S>
Throws:
IOException

getUpgradeInbound

public UpgradeInbound getUpgradeInbound()
Specified by:
getUpgradeInbound in interface Processor<S>
Specified by:
getUpgradeInbound in class AbstractProcessor<S>

recycle

public void recycle(boolean socketClosing)
Recycle the processor, ready for the next request which may be on the same connection or a different connection.

Parameters:
socketClosing - Indicates if the socket is about to be closed allowing the processor to perform any additional clean-up that may be required

actionInternal

protected abstract void actionInternal(ActionCode actionCode,
                                       Object param)

output

protected abstract void output(byte[] src,
                               int offset,
                               int length)
                        throws IOException
Throws:
IOException

receive

protected abstract boolean receive()
                            throws IOException
Throws:
IOException

isComet

public final boolean isComet()
Specified by:
isComet in interface Processor<S>
Specified by:
isComet in class AbstractProcessor<S>

isUpgrade

public final boolean isUpgrade()
Specified by:
isUpgrade in interface Processor<S>
Specified by:
isUpgrade in class AbstractProcessor<S>

refillReadBuffer

protected boolean refillReadBuffer()
                            throws IOException
Get more request body data from the web server and store it in the internal buffer.

Returns:
true if there is more data, false if not.
Throws:
IOException

prepareRequest

protected void prepareRequest()
After reading the request headers, we have to setup the request filters.


parseHost

protected void parseHost(MessageBytes valueMB)
Parse host.


prepareResponse

protected void prepareResponse()
                        throws IOException
When committing the response, we have to validate the set of headers, as well as setup the response filters.

Throws:
IOException

flush

protected void flush(boolean explicit)
              throws IOException
Callback to write data from the buffer.

Throws:
IOException

finish

protected void finish()
               throws IOException
Finish AJP response.

Throws:
IOException

Apache Tomcat 7.0.37

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.