public class AsyncMiddleManServlet extends AbstractProxyServlet
Servlet 3.1 asynchronous proxy servlet with capability to intercept and modify request/response content.
Both the request processing and the I/O are asynchronous.
ProxyServlet
,
AsyncProxyServlet
,
ConnectHandler
,
Serialized FormModifier and Type | Class and Description |
---|---|
static interface |
AsyncMiddleManServlet.ContentTransformer
Allows applications to transform upstream and downstream content.
|
static class |
AsyncMiddleManServlet.GZIPContentTransformer |
private static class |
AsyncMiddleManServlet.IdentityContentTransformer |
private class |
AsyncMiddleManServlet.ProxyDeferredContentProvider |
protected class |
AsyncMiddleManServlet.ProxyReader |
protected class |
AsyncMiddleManServlet.ProxyResponseListener |
protected class |
AsyncMiddleManServlet.ProxyWriter |
static class |
AsyncMiddleManServlet.Transparent
Convenience extension of
AsyncMiddleManServlet that offers transparent proxy functionalities. |
AbstractProxyServlet.ProxyContinueProtocolHandler, AbstractProxyServlet.TransparentDelegate
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
CLIENT_TRANSFORMER_ATTRIBUTE |
private static java.lang.String |
CONTINUE_ACTION_ATTRIBUTE |
private static java.lang.String |
PROXY_REQUEST_CONTENT_COMMITTED_ATTRIBUTE |
private static java.lang.String |
SERVER_TRANSFORMER_ATTRIBUTE |
_log, CLIENT_REQUEST_ATTRIBUTE, HOP_HEADERS
Constructor and Description |
---|
AsyncMiddleManServlet() |
Modifier and Type | Method and Description |
---|---|
private void |
cleanup(javax.servlet.http.HttpServletRequest clientRequest) |
protected AsyncMiddleManServlet.ContentTransformer |
newClientRequestContentTransformer(javax.servlet.http.HttpServletRequest clientRequest,
Request proxyRequest) |
protected DeferredContentProvider |
newProxyContentProvider(javax.servlet.http.HttpServletRequest clientRequest,
javax.servlet.http.HttpServletResponse proxyResponse,
Request proxyRequest) |
protected javax.servlet.ReadListener |
newProxyReadListener(javax.servlet.http.HttpServletRequest clientRequest,
javax.servlet.http.HttpServletResponse proxyResponse,
Request proxyRequest,
DeferredContentProvider provider) |
protected Response.CompleteListener |
newProxyResponseListener(javax.servlet.http.HttpServletRequest clientRequest,
javax.servlet.http.HttpServletResponse proxyResponse) |
protected AsyncMiddleManServlet.ProxyWriter |
newProxyWriteListener(javax.servlet.http.HttpServletRequest clientRequest,
Response proxyResponse) |
protected AsyncMiddleManServlet.ContentTransformer |
newServerResponseContentTransformer(javax.servlet.http.HttpServletRequest clientRequest,
javax.servlet.http.HttpServletResponse proxyResponse,
Response serverResponse) |
protected void |
onContinue(javax.servlet.http.HttpServletRequest clientRequest,
Request proxyRequest) |
(package private) int |
readClientRequestContent(javax.servlet.ServletInputStream input,
byte[] buffer) |
protected void |
service(javax.servlet.http.HttpServletRequest clientRequest,
javax.servlet.http.HttpServletResponse proxyResponse) |
private void |
transform(AsyncMiddleManServlet.ContentTransformer transformer,
java.nio.ByteBuffer input,
boolean finished,
java.util.List<java.nio.ByteBuffer> output) |
private static void |
write(java.io.OutputStream output,
java.nio.ByteBuffer content) |
(package private) void |
writeProxyResponseContent(javax.servlet.ServletOutputStream output,
java.nio.ByteBuffer content) |
addProxyHeaders, addViaHeader, addXForwardedHeaders, clientRequestStatus, copyRequestHeaders, createHttpClient, createLogger, destroy, expects100Continue, filterServerResponseHeader, findConnectionHeaders, getBlackListHosts, getHostHeader, getHttpClient, getRequestId, getTimeout, getViaHost, getWhiteListHosts, hasContent, init, newHttpClient, onClientRequestFailure, onProxyResponseFailure, onProxyResponseSuccess, onProxyRewriteFailed, onServerResponseHeaders, proxyResponseStatus, rewriteTarget, sendProxyRequest, sendProxyResponseError, setTimeout, validateDestination
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
private static final java.lang.String PROXY_REQUEST_CONTENT_COMMITTED_ATTRIBUTE
private static final java.lang.String CLIENT_TRANSFORMER_ATTRIBUTE
private static final java.lang.String SERVER_TRANSFORMER_ATTRIBUTE
private static final java.lang.String CONTINUE_ACTION_ATTRIBUTE
protected void service(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse) throws javax.servlet.ServletException, java.io.IOException
service
in class javax.servlet.http.HttpServlet
javax.servlet.ServletException
java.io.IOException
protected DeferredContentProvider newProxyContentProvider(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest) throws java.io.IOException
java.io.IOException
protected javax.servlet.ReadListener newProxyReadListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest, DeferredContentProvider provider)
protected AsyncMiddleManServlet.ProxyWriter newProxyWriteListener(javax.servlet.http.HttpServletRequest clientRequest, Response proxyResponse)
protected Response.CompleteListener newProxyResponseListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse)
newProxyResponseListener
in class AbstractProxyServlet
protected AsyncMiddleManServlet.ContentTransformer newClientRequestContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)
protected AsyncMiddleManServlet.ContentTransformer newServerResponseContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Response serverResponse)
protected void onContinue(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)
onContinue
in class AbstractProxyServlet
private void transform(AsyncMiddleManServlet.ContentTransformer transformer, java.nio.ByteBuffer input, boolean finished, java.util.List<java.nio.ByteBuffer> output) throws java.io.IOException
java.io.IOException
int readClientRequestContent(javax.servlet.ServletInputStream input, byte[] buffer) throws java.io.IOException
java.io.IOException
void writeProxyResponseContent(javax.servlet.ServletOutputStream output, java.nio.ByteBuffer content) throws java.io.IOException
java.io.IOException
private static void write(java.io.OutputStream output, java.nio.ByteBuffer content) throws java.io.IOException
java.io.IOException
private void cleanup(javax.servlet.http.HttpServletRequest clientRequest)