org.apache.coyote.ajp
Class AjpAprProcessor

java.lang.Object
  extended byorg.apache.coyote.ajp.AjpAprProcessor
All Implemented Interfaces:
ActionHook

public class AjpAprProcessor
extends java.lang.Object
implements ActionHook

Processes HTTP requests.

Author:
Remy Maucherat, Henri Gomez, Dan Milstein, Keith Wannamaker, Kevin Seguin, Costin Manolache, Bill Barker

Nested Class Summary
protected  class AjpAprProcessor.SocketInputBuffer
          This class is an input buffer which will read its data from an input stream.
protected  class AjpAprProcessor.SocketOutputBuffer
          This class is an output buffer which will write data to an output stream.
 
Field Summary
protected  Adapter adapter
          Associated adapter.
protected  MessageBytes bodyBytes
          Body message.
protected  AjpMessage bodyMessage
          Body message.
protected  MessageBytes certificates
          Byte chunk for certs.
protected  boolean empty
          Body empty flag.
protected static byte[] endMessageArray
          End message array.
protected  boolean endOfStream
          End of stream flag.
protected  AprEndpoint endpoint
          Associated endpoint.
protected  boolean error
          Error flag.
protected  boolean finished
          Finished response.
protected  boolean first
          First read.
protected static java.nio.ByteBuffer flushMessageBuffer
          Direct buffer used for sending explicit flush message.
protected static java.nio.ByteBuffer getBodyMessageBuffer
          Direct buffer used for sending right away a get body message.
protected  char[] hostNameC
          Host name (used to avoid useless B2C conversion on the host name).
protected  java.nio.ByteBuffer inputBuffer
          Direct buffer used for input.
protected static org.apache.commons.logging.Log log
          Logger.
protected  java.nio.ByteBuffer outputBuffer
          Direct buffer used for output.
protected static java.nio.ByteBuffer pongMessageBuffer
          Direct buffer used for sending right away a pong message.
protected  long readTimeout
          The socket timeout used when reading the first block of the request header.
protected  boolean replay
          Replay read.
protected  Request request
          Request object.
protected  AjpMessage requestHeaderMessage
          Header message.
protected  java.lang.String requiredSecret
          Required secret.
protected  Response response
          Response object.
protected  AjpMessage responseHeaderMessage
          Message used for response header composition.
protected static StringManager sm
          The string manager for this package.
protected  long socket
          Socket associated with the current connection.
protected  boolean started
          State flag.
protected  MessageBytes tmpMB
          Temp message bytes used for processing.
protected  boolean tomcatAuthentication
          Use Tomcat authentication ?
 
Constructor Summary
AjpAprProcessor(int packetSize, AprEndpoint endpoint)
           
 
Method Summary
 void action(ActionCode actionCode, java.lang.Object param)
          Send an action to the connector.
protected  void finish()
          Finish AJP response.
protected  void flush()
          Callback to write data from the buffer.
 Adapter getAdapter()
          Get the associated adapter.
 Request getRequest()
          Get the request associated with this processor.
 boolean getTomcatAuthentication()
           
 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.
 boolean process(long socket)
          Process pipelined HTTP requests using the specified input and output streams.
protected  boolean read(int n)
          Read at least the specified amount of bytes, and place them in the input buffer.
protected  boolean readMessage(AjpMessage message, boolean first, boolean useAvailableData)
          Read an AJP message.
protected  boolean readt(int n, boolean useAvailableData)
          Read at least the specified amount of bytes, and place them in the input buffer.
 boolean receive()
          Receive a chunk of data.
 void recycle()
          Recycle the processor.
 void setAdapter(Adapter adapter)
          Set the associated adapter.
 void setRequiredSecret(java.lang.String requiredSecret)
           
 void setTomcatAuthentication(boolean tomcatAuthentication)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static org.apache.commons.logging.Log log
Logger.


sm

protected static StringManager sm
The string manager for this package.


adapter

protected Adapter adapter
Associated adapter.


request

protected Request request
Request object.


response

protected Response response
Response object.


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.


responseHeaderMessage

protected AjpMessage responseHeaderMessage
Message used for response header composition.


bodyMessage

protected AjpMessage bodyMessage
Body message.


bodyBytes

protected MessageBytes bodyBytes
Body message.


started

protected boolean started
State flag.


error

protected boolean error
Error flag.


socket

protected long socket
Socket associated with the current connection.


hostNameC

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


endpoint

protected AprEndpoint endpoint
Associated endpoint.


readTimeout

protected long readTimeout
The socket timeout used when reading the first block of the request header.


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.


outputBuffer

protected java.nio.ByteBuffer outputBuffer
Direct buffer used for output.


inputBuffer

protected java.nio.ByteBuffer inputBuffer
Direct buffer used for input.


getBodyMessageBuffer

protected static final java.nio.ByteBuffer getBodyMessageBuffer
Direct buffer used for sending right away a get body message.


pongMessageBuffer

protected static final java.nio.ByteBuffer pongMessageBuffer
Direct buffer used for sending right away a pong message.


endMessageArray

protected static final byte[] endMessageArray
End message array.


flushMessageBuffer

protected static final java.nio.ByteBuffer flushMessageBuffer
Direct buffer used for sending explicit flush message.


tomcatAuthentication

protected boolean tomcatAuthentication
Use Tomcat authentication ?


requiredSecret

protected java.lang.String requiredSecret
Required secret.

Constructor Detail

AjpAprProcessor

public AjpAprProcessor(int packetSize,
                       AprEndpoint endpoint)
Method Detail

getTomcatAuthentication

public boolean getTomcatAuthentication()

setTomcatAuthentication

public void setTomcatAuthentication(boolean tomcatAuthentication)

setRequiredSecret

public void setRequiredSecret(java.lang.String requiredSecret)

getRequest

public Request getRequest()
Get the request associated with this processor.

Returns:
The request

process

public boolean process(long socket)
                throws java.io.IOException
Process pipelined HTTP requests using the specified input and output streams.

Throws:
java.io.IOException - error during an I/O operation

action

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

Specified by:
action in interface ActionHook
Parameters:
actionCode - Type of the action
param - Action parameter

setAdapter

public void setAdapter(Adapter adapter)
Set the associated adapter.

Parameters:
adapter - the new adapter

getAdapter

public Adapter getAdapter()
Get the associated adapter.

Returns:
the associated adapter

prepareRequest

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


parseHost

public void parseHost(MessageBytes valueMB)
Parse host.


prepareResponse

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

Throws:
java.io.IOException

finish

protected void finish()
               throws java.io.IOException
Finish AJP response.

Throws:
java.io.IOException

read

protected boolean read(int n)
                throws java.io.IOException
Read at least the specified amount of bytes, and place them in the input buffer.

Throws:
java.io.IOException

readt

protected boolean readt(int n,
                        boolean useAvailableData)
                 throws java.io.IOException
Read at least the specified amount of bytes, and place them in the input buffer.

Throws:
java.io.IOException

receive

public boolean receive()
                throws java.io.IOException
Receive a chunk of data. Called to implement the 'special' packet in ajp13 and to receive the data after we send a GET_BODY packet

Throws:
java.io.IOException

readMessage

protected boolean readMessage(AjpMessage message,
                              boolean first,
                              boolean useAvailableData)
                       throws java.io.IOException
Read an AJP message.

Parameters:
first - is true if the message is the first in the request, which will cause a short duration blocking read
Returns:
true if the message has been read, false if the short read didn't return anything
Throws:
java.io.IOException - any other failure, including incomplete reads

recycle

public void recycle()
Recycle the processor.


flush

protected void flush()
              throws java.io.IOException
Callback to write data from the buffer.

Throws:
java.io.IOException


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