Apache Tomcat 7.0.28

org.apache.catalina.connector
Class CoyoteAdapter

java.lang.Object
  extended by org.apache.catalina.connector.CoyoteAdapter
All Implemented Interfaces:
Adapter

public class CoyoteAdapter
extends Object
implements Adapter

Implementation of a request processor which delegates the processing to a Coyote processor.

Version:
$Id: CoyoteAdapter.java 1335700 2012-05-08 19:07:09Z markt $
Author:
Craig R. McClanahan, Remy Maucherat

Field Summary
static int ADAPTER_NOTES
           
protected static boolean ALLOW_BACKSLASH
           
protected static StringManager sm
          The string manager for this package.
protected static URLEncoder urlEncoder
          Encoder for the Location URL in HTTP redirects.
 
Constructor Summary
CoyoteAdapter(Connector connector)
          Construct a new CoyoteProcessor associated with the specified connector.
 
Method Summary
 boolean asyncDispatch(Request req, Response res, SocketStatus status)
           
static boolean checkNormalize(MessageBytes uriMB)
          Check that the URI is normalized following character decoding.
protected  void convertMB(MessageBytes mb)
          Character conversion of the a US-ASCII MessageBytes.
protected  void convertURI(MessageBytes uri, Request request)
          Character conversion of the URI.
protected static void copyBytes(byte[] b, int dest, int src, int len)
          Copy an array of bytes to a different position.
 boolean event(Request req, Response res, SocketStatus status)
          Event method.
 String getDomain()
          Provide the name of the domain to use to register MBeans for conponents associated with the connector.
 void log(Request req, Response res, long time)
           
static boolean normalize(MessageBytes uriMB)
          Normalize URI.
protected  void parsePathParameters(Request req, Request request)
          Extract the path parameters from the request.
protected  void parseSessionCookiesId(Request req, Request request)
          Parse session id in URL.
protected  void parseSessionSslId(Request request)
          Look for SSL session ID if required.
protected  boolean postParseRequest(Request req, Request request, Response res, Response response)
          Parse additional request parameters.
 void service(Request req, Response res)
          Service method.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ADAPTER_NOTES

public static final int ADAPTER_NOTES
See Also:
Constant Field Values

ALLOW_BACKSLASH

protected static final boolean ALLOW_BACKSLASH

sm

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


urlEncoder

protected static URLEncoder urlEncoder
Encoder for the Location URL in HTTP redirects.

Constructor Detail

CoyoteAdapter

public CoyoteAdapter(Connector connector)
Construct a new CoyoteProcessor associated with the specified connector.

Parameters:
connector - CoyoteConnector that owns this processor
Method Detail

event

public boolean event(Request req,
                     Response res,
                     SocketStatus status)
Event method.

Specified by:
event in interface Adapter
Returns:
false to indicate an error, expected or not

asyncDispatch

public boolean asyncDispatch(Request req,
                             Response res,
                             SocketStatus status)
                      throws Exception
Specified by:
asyncDispatch in interface Adapter
Throws:
Exception

service

public void service(Request req,
                    Response res)
             throws Exception
Service method.

Specified by:
service in interface Adapter
Throws:
Exception - if an error happens during handling of the request. Common errors are:
  • IOException if an input/output error occurs and we are processing an included servlet (otherwise it is swallowed and handled by the top level error handler mechanism)
  • ServletException if a servlet throws an exception and we are processing an included servlet (otherwise it is swallowed and handled by the top level error handler mechanism)
Tomcat should be able to handle and log any other exception ( including runtime exceptions )

log

public void log(Request req,
                Response res,
                long time)
Specified by:
log in interface Adapter

getDomain

public String getDomain()
Description copied from interface: Adapter
Provide the name of the domain to use to register MBeans for conponents associated with the connector.

Specified by:
getDomain in interface Adapter
Returns:
The MBean domain name

postParseRequest

protected boolean postParseRequest(Request req,
                                   Request request,
                                   Response res,
                                   Response response)
                            throws Exception
Parse additional request parameters.

Throws:
Exception

parsePathParameters

protected void parsePathParameters(Request req,
                                   Request request)
Extract the path parameters from the request. This assumes parameters are of the form /path;name=value;name2=value2/ etc. Currently only really interested in the session ID that will be in this form. Other parameters can safely be ignored.

Parameters:
req -
request -

parseSessionSslId

protected void parseSessionSslId(Request request)
Look for SSL session ID if required. Only look for SSL Session ID if it is the only tracking method enabled.


parseSessionCookiesId

protected void parseSessionCookiesId(Request req,
                                     Request request)
Parse session id in URL.


convertURI

protected void convertURI(MessageBytes uri,
                          Request request)
                   throws Exception
Character conversion of the URI.

Throws:
Exception

convertMB

protected void convertMB(MessageBytes mb)
Character conversion of the a US-ASCII MessageBytes.


normalize

public static boolean normalize(MessageBytes uriMB)
Normalize URI.

This method normalizes "\", "//", "/./" and "/../". This method will return false when trying to go above the root, or if the URI contains a null byte.

Parameters:
uriMB - URI to be normalized

checkNormalize

public static boolean checkNormalize(MessageBytes uriMB)
Check that the URI is normalized following character decoding.

This method checks for "\", 0, "//", "/./" and "/../". This method will return false if sequences that are supposed to be normalized are still present in the URI.

Parameters:
uriMB - URI to be checked (should be chars)

copyBytes

protected static void copyBytes(byte[] b,
                                int dest,
                                int src,
                                int len)
Copy an array of bytes to a different position. Used during normalization.


Apache Tomcat 7.0.28

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