Package org.eclipse.jetty.proxy
Class AsyncMiddleManServlet
- java.lang.Object
-
- javax.servlet.GenericServlet
-
- javax.servlet.http.HttpServlet
-
- org.eclipse.jetty.proxy.AbstractProxyServlet
-
- org.eclipse.jetty.proxy.AsyncMiddleManServlet
-
- All Implemented Interfaces:
java.io.Serializable,javax.servlet.Servlet,javax.servlet.ServletConfig
- Direct Known Subclasses:
AsyncMiddleManServlet.Transparent
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.
- See Also:
ProxyServlet,AsyncProxyServlet,ConnectHandler, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceAsyncMiddleManServlet.ContentTransformerAllows applications to transform upstream and downstream content.static classAsyncMiddleManServlet.GZIPContentTransformerprivate static classAsyncMiddleManServlet.IdentityContentTransformerprivate classAsyncMiddleManServlet.ProxyDeferredContentProviderprotected classAsyncMiddleManServlet.ProxyReaderprotected classAsyncMiddleManServlet.ProxyResponseListenerprotected classAsyncMiddleManServlet.ProxyWriterstatic classAsyncMiddleManServlet.TransparentConvenience extension ofAsyncMiddleManServletthat offers transparent proxy functionalities.-
Nested classes/interfaces inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
AbstractProxyServlet.ProxyContinueProtocolHandler, AbstractProxyServlet.TransparentDelegate
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.StringCLIENT_TRANSFORMER_ATTRIBUTEprivate static java.lang.StringCONTINUE_ACTION_ATTRIBUTEprivate static java.lang.StringPROXY_REQUEST_CONTENT_COMMITTED_ATTRIBUTEprivate static java.lang.StringSERVER_TRANSFORMER_ATTRIBUTEprivate static java.lang.StringWRITE_LISTENER_ATTRIBUTE-
Fields inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
_log, CLIENT_REQUEST_ATTRIBUTE, HOP_HEADERS
-
-
Constructor Summary
Constructors Constructor Description AsyncMiddleManServlet()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcleanup(javax.servlet.http.HttpServletRequest clientRequest)protected AsyncMiddleManServlet.ContentTransformernewClientRequestContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)protected DeferredContentProvidernewProxyContentProvider(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest)protected javax.servlet.ReadListenernewProxyReadListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest, DeferredContentProvider provider)protected Response.CompleteListenernewProxyResponseListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse)protected AsyncMiddleManServlet.ProxyWriternewProxyWriteListener(javax.servlet.http.HttpServletRequest clientRequest, Response proxyResponse)protected AsyncMiddleManServlet.ContentTransformernewServerResponseContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Response serverResponse)protected voidonContinue(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)(package private) intreadClientRequestContent(javax.servlet.ServletInputStream input, byte[] buffer)protected voidservice(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse)private voidtransform(AsyncMiddleManServlet.ContentTransformer transformer, java.nio.ByteBuffer input, boolean finished, java.util.List<java.nio.ByteBuffer> output)private static voidwrite(java.io.OutputStream output, java.nio.ByteBuffer content)(package private) voidwriteProxyResponseContent(javax.servlet.ServletOutputStream output, java.nio.ByteBuffer content)-
Methods inherited from class org.eclipse.jetty.proxy.AbstractProxyServlet
addProxyHeaders, addViaHeader, addViaHeader, addXForwardedHeaders, clientRequestStatus, copyRequestHeaders, createHttpClient, createLogger, destroy, expects100Continue, filterServerResponseHeader, findConnectionHeaders, getBlackListHosts, getHostHeader, getHttpClient, getRequestId, getTimeout, getViaHost, getWhiteListHosts, hasContent, init, newHttpClient, newProxyRequest, onClientRequestFailure, onProxyResponseFailure, onProxyResponseSuccess, onProxyRewriteFailed, onServerResponseHeaders, proxyResponseStatus, rewriteTarget, sendProxyRequest, sendProxyResponseError, setTimeout, validateDestination
-
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
-
-
-
-
Field Detail
-
PROXY_REQUEST_CONTENT_COMMITTED_ATTRIBUTE
private static final java.lang.String PROXY_REQUEST_CONTENT_COMMITTED_ATTRIBUTE
-
CLIENT_TRANSFORMER_ATTRIBUTE
private static final java.lang.String CLIENT_TRANSFORMER_ATTRIBUTE
-
SERVER_TRANSFORMER_ATTRIBUTE
private static final java.lang.String SERVER_TRANSFORMER_ATTRIBUTE
-
CONTINUE_ACTION_ATTRIBUTE
private static final java.lang.String CONTINUE_ACTION_ATTRIBUTE
-
WRITE_LISTENER_ATTRIBUTE
private static final java.lang.String WRITE_LISTENER_ATTRIBUTE
-
-
Method Detail
-
service
protected void service(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse) throws javax.servlet.ServletException, java.io.IOException- Overrides:
servicein classjavax.servlet.http.HttpServlet- Throws:
javax.servlet.ServletExceptionjava.io.IOException
-
newProxyContentProvider
protected DeferredContentProvider newProxyContentProvider(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest) throws java.io.IOException
- Throws:
java.io.IOException
-
newProxyReadListener
protected javax.servlet.ReadListener newProxyReadListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Request proxyRequest, DeferredContentProvider provider)
-
newProxyWriteListener
protected AsyncMiddleManServlet.ProxyWriter newProxyWriteListener(javax.servlet.http.HttpServletRequest clientRequest, Response proxyResponse)
-
newProxyResponseListener
protected Response.CompleteListener newProxyResponseListener(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse)
- Specified by:
newProxyResponseListenerin classAbstractProxyServlet
-
newClientRequestContentTransformer
protected AsyncMiddleManServlet.ContentTransformer newClientRequestContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)
-
newServerResponseContentTransformer
protected AsyncMiddleManServlet.ContentTransformer newServerResponseContentTransformer(javax.servlet.http.HttpServletRequest clientRequest, javax.servlet.http.HttpServletResponse proxyResponse, Response serverResponse)
-
onContinue
protected void onContinue(javax.servlet.http.HttpServletRequest clientRequest, Request proxyRequest)- Overrides:
onContinuein classAbstractProxyServlet
-
transform
private void transform(AsyncMiddleManServlet.ContentTransformer transformer, java.nio.ByteBuffer input, boolean finished, java.util.List<java.nio.ByteBuffer> output) throws java.io.IOException
- Throws:
java.io.IOException
-
readClientRequestContent
int readClientRequestContent(javax.servlet.ServletInputStream input, byte[] buffer) throws java.io.IOException- Throws:
java.io.IOException
-
writeProxyResponseContent
void writeProxyResponseContent(javax.servlet.ServletOutputStream output, java.nio.ByteBuffer content) throws java.io.IOException- Throws:
java.io.IOException
-
write
private static void write(java.io.OutputStream output, java.nio.ByteBuffer content) throws java.io.IOException- Throws:
java.io.IOException
-
cleanup
private void cleanup(javax.servlet.http.HttpServletRequest clientRequest)
-
-