Package org.apache.catalina.connector
Class CoyoteAdapter
- java.lang.Object
-
- org.apache.catalina.connector.CoyoteAdapter
-
-
Field Summary
Fields Modifier and Type Field Description static int
ADAPTER_NOTES
protected static boolean
ALLOW_BACKSLASH
protected static StringManager
sm
The string manager for this package.
-
Constructor Summary
Constructors Constructor Description CoyoteAdapter(Connector connector)
Construct a new CoyoteProcessor associated with the specified connector.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
asyncDispatch(Request req, Response res, SocketEvent status)
static boolean
checkNormalize(MessageBytes uriMB)
Deprecated.This code will be removed in Apache Tomcat 10 onwardsvoid
checkRecycled(Request req, Response res)
Assert that request and response have been recycled.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.java.lang.String
getDomain()
Provide the name of the domain to use to register MBeans for components associated with the connector.void
log(Request req, Response res, long time)
static boolean
normalize(MessageBytes uriMB)
This method normalizes "\", "//", "/./" and "/../".protected void
parsePathParameters(Request req, Request request)
Extract the path parameters from the request.protected void
parseSessionCookiesId(Request request)
Parse session id in Cookie.protected void
parseSessionSslId(Request request)
Look for SSL session ID if required.protected boolean
postParseRequest(Request req, Request request, Response res, Response response)
Perform the necessary processing after the HTTP headers have been parsed to enable the request/response pair to be passed to the start of the container pipeline for processing.boolean
prepare(Request req, Response res)
Prepare the given request/response for processing.void
service(Request req, Response res)
Call the service method, and notify all listeners
-
-
-
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.
-
-
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
-
asyncDispatch
public boolean asyncDispatch(Request req, Response res, SocketEvent status) throws java.lang.Exception
- Specified by:
asyncDispatch
in interfaceAdapter
- Throws:
java.lang.Exception
-
service
public void service(Request req, Response res) throws java.lang.Exception
Description copied from interface:Adapter
Call the service method, and notify all listeners- Specified by:
service
in interfaceAdapter
- Parameters:
req
- The request objectres
- The response object- Throws:
java.lang.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)
-
prepare
public boolean prepare(Request req, Response res) throws java.io.IOException, ServletException
Description copied from interface:Adapter
Prepare the given request/response for processing. This method requires that the request object has been populated with the information available from the HTTP headers.- Specified by:
prepare
in interfaceAdapter
- Parameters:
req
- The request objectres
- The response object- Returns:
true
if processing can continue, otherwisefalse
in which case an appropriate error will have been set on the response- Throws:
java.io.IOException
ServletException
-
checkRecycled
public void checkRecycled(Request req, Response res)
Description copied from interface:Adapter
Assert that request and response have been recycled. If they have not then log a warning and force a recycle. This method is called as a safety check when a processor is being recycled and may be returned to a pool for reuse.- Specified by:
checkRecycled
in interfaceAdapter
- Parameters:
req
- Requestres
- Response
-
getDomain
public java.lang.String getDomain()
Description copied from interface:Adapter
Provide the name of the domain to use to register MBeans for components associated with the connector.
-
postParseRequest
protected boolean postParseRequest(Request req, Request request, Response res, Response response) throws java.io.IOException, ServletException
Perform the necessary processing after the HTTP headers have been parsed to enable the request/response pair to be passed to the start of the container pipeline for processing.- Parameters:
req
- The coyote request objectrequest
- The catalina request objectres
- The coyote response objectresponse
- The catalina response object- Returns:
true
if the request should be passed on to the start of the container pipeline, otherwisefalse
- Throws:
java.io.IOException
- If there is insufficient space in a buffer while processing headersServletException
- If the supported methods of the target servlet cannot be determined
-
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
- The Coyote request objectrequest
- The Servlet request object
-
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.- Parameters:
request
- The Servlet request object
-
parseSessionCookiesId
protected void parseSessionCookiesId(Request request)
Parse session id in Cookie.- Parameters:
request
- The Servlet request object
-
convertURI
protected void convertURI(MessageBytes uri, Request request) throws java.io.IOException
Character conversion of the URI.- Parameters:
uri
- MessageBytes object containing the URIrequest
- The Servlet request object- Throws:
java.io.IOException
- if a IO exception occurs sending an error to the client
-
convertMB
protected void convertMB(MessageBytes mb)
Character conversion of the a US-ASCII MessageBytes.- Parameters:
mb
- The MessageBytes instance containing the bytes that should be converted to chars
-
normalize
public static boolean normalize(MessageBytes uriMB)
This method normalizes "\", "//", "/./" and "/../".- Parameters:
uriMB
- URI to be normalized- Returns:
false
if normalizing this URI would require going above the root, or if the URI contains a null byte, otherwisetrue
-
checkNormalize
@Deprecated public static boolean checkNormalize(MessageBytes uriMB)
Deprecated.This code will be removed in Apache Tomcat 10 onwardsCheck that the URI is normalized following character decoding. This method checks for "\", 0, "//", "/./" and "/../".- Parameters:
uriMB
- URI to be checked (should be chars)- Returns:
false
if sequences that are supposed to be normalized are still present in the URI, otherwisetrue
-
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.- Parameters:
b
- The bytes that should be copieddest
- Destination offsetsrc
- Source offsetlen
- Length
-
-