public class ProxyServlet
extends javax.servlet.http.HttpServlet
HttpClient instance is set as context attribute,
prefixed with the servlet's name and exposed by the mechanism provided by
ContextHandler.MANAGED_ATTRIBUTES.
The following init parameters may be used to configure the servlet:
createHttpClient() for init parameters used to configure
the HttpClient instance.ConnectHandler,
Serialized Form| Modifier and Type | Class and Description |
|---|---|
static class |
ProxyServlet.Transparent
Transparent Proxy.
|
| Modifier and Type | Field and Description |
|---|---|
protected Logger |
_log |
protected static String |
ASYNC_CONTEXT |
| Constructor and Description |
|---|
ProxyServlet() |
| Modifier and Type | Method and Description |
|---|---|
protected HttpClient |
createHttpClient()
Creates a
HttpClient instance, configured with init parameters of this servlet. |
protected Logger |
createLogger() |
protected void |
customizeProxyRequest(Request proxyRequest,
javax.servlet.http.HttpServletRequest request)
Extension point for subclasses to customize the proxy request.
|
void |
destroy() |
protected String |
filterResponseHeader(javax.servlet.http.HttpServletRequest request,
String headerName,
String headerValue)
Extension point for remote server response header filtering.
|
Set<String> |
getBlackListHosts() |
protected int |
getRequestId(javax.servlet.http.HttpServletRequest request) |
long |
getTimeout() |
Set<String> |
getWhiteListHosts() |
void |
init() |
protected HttpClient |
newHttpClient() |
protected void |
onResponseContent(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse,
byte[] buffer,
int offset,
int length) |
protected void |
onResponseFailure(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse,
Throwable failure) |
protected void |
onResponseHeaders(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse) |
protected void |
onResponseSuccess(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse) |
protected URI |
rewriteURI(javax.servlet.http.HttpServletRequest request) |
protected void |
service(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) |
void |
setTimeout(long timeout) |
boolean |
validateDestination(String host,
int port)
Checks the given
host and port against whitelist and blacklist. |
protected static String |
viaHost() |
doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, servicepublic void init()
throws javax.servlet.ServletException
init in class javax.servlet.GenericServletjavax.servlet.ServletExceptionpublic long getTimeout()
public void setTimeout(long timeout)
protected static String viaHost()
protected Logger createLogger()
public void destroy()
destroy in interface javax.servlet.Servletdestroy in class javax.servlet.GenericServletprotected HttpClient createHttpClient() throws javax.servlet.ServletException
HttpClient instance, configured with init parameters of this servlet.
The init parameters used to configure the HttpClient instance are:
| init-param | default | description |
|---|---|---|
| maxThreads | 256 | The max number of threads of HttpClient's Executor |
| maxConnections | 32768 | The max number of connections per destination, see HttpClient.setMaxConnectionsPerDestination(int) |
| idleTimeout | 30000 | The idle timeout in milliseconds, see HttpClient.setIdleTimeout(long) |
| timeout | 60000 | The total timeout in milliseconds, see Request.timeout(long, TimeUnit) |
| requestBufferSize | HttpClient's default | The request buffer size, see HttpClient.setRequestBufferSize(int) |
| responseBufferSize | HttpClient's default | The response buffer size, see HttpClient.setResponseBufferSize(int) |
HttpClient configured from the servlet configurationjavax.servlet.ServletException - if the HttpClient cannot be createdprotected HttpClient newHttpClient()
public boolean validateDestination(String host, int port)
host and port against whitelist and blacklist.host - the host to checkport - the port to checkprotected void service(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response)
throws javax.servlet.ServletException,
IOException
service in class javax.servlet.http.HttpServletjavax.servlet.ServletExceptionIOExceptionprotected void onResponseHeaders(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse)
protected void onResponseContent(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse,
byte[] buffer,
int offset,
int length)
throws IOException
IOExceptionprotected void onResponseSuccess(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse)
protected void onResponseFailure(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response,
Response proxyResponse,
Throwable failure)
protected int getRequestId(javax.servlet.http.HttpServletRequest request)
protected URI rewriteURI(javax.servlet.http.HttpServletRequest request)
protected void customizeProxyRequest(Request proxyRequest, javax.servlet.http.HttpServletRequest request)
proxyRequest - the proxy request to customizerequest - the request to be proxiedprotected String filterResponseHeader(javax.servlet.http.HttpServletRequest request, String headerName, String headerValue)
headerName - the header nameheaderValue - the header valuerequest - the request to proxyCopyright © 1995-2013 Mort Bay Consulting. All Rights Reserved.