mirror of
https://github.com/jetty/jetty.project.git
synced 2025-03-01 11:29:29 +00:00
Removed deprecated APIs.
This commit is contained in:
parent
3f3e7391a6
commit
18938047e9
@ -22,11 +22,11 @@ import java.net.URI;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.servlet.RequestDispatcher;
|
import javax.servlet.RequestDispatcher;
|
||||||
import javax.servlet.ServletConfig;
|
import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.eclipse.jetty.client.HttpClient;
|
import org.eclipse.jetty.client.HttpClient;
|
||||||
import org.eclipse.jetty.client.api.Request;
|
import org.eclipse.jetty.client.api.Request;
|
||||||
@ -104,7 +104,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void customizeProxyRequest(Request proxyRequest, HttpServletRequest request)
|
protected void sendProxyRequest(HttpServletRequest request, HttpServletResponse proxyResponse, Request proxyRequest)
|
||||||
{
|
{
|
||||||
proxyRequest.attribute(REMOTE_ADDR_ATTRIBUTE, request.getRemoteAddr());
|
proxyRequest.attribute(REMOTE_ADDR_ATTRIBUTE, request.getRemoteAddr());
|
||||||
proxyRequest.attribute(REMOTE_PORT_ATTRIBUTE, String.valueOf(request.getRemotePort()));
|
proxyRequest.attribute(REMOTE_PORT_ATTRIBUTE, String.valueOf(request.getRemotePort()));
|
||||||
@ -157,7 +157,7 @@ public class FastCGIProxyServlet extends AsyncProxyServlet.Transparent
|
|||||||
proxyRequest.header(HttpHeader.COOKIE, builder.toString());
|
proxyRequest.header(HttpHeader.COOKIE, builder.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
super.customizeProxyRequest(proxyRequest, request);
|
super.sendProxyRequest(request, proxyResponse, proxyRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void customizeFastCGIHeaders(Request proxyRequest, HttpFields fastCGIHeaders)
|
protected void customizeFastCGIHeaders(Request proxyRequest, HttpFields fastCGIHeaders)
|
||||||
|
@ -19,13 +19,11 @@
|
|||||||
package org.eclipse.jetty.fcgi.server.proxy;
|
package org.eclipse.jetty.fcgi.server.proxy;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -85,9 +83,9 @@ public class FastCGIProxyServletTest
|
|||||||
FastCGIProxyServlet fcgiServlet = new FastCGIProxyServlet()
|
FastCGIProxyServlet fcgiServlet = new FastCGIProxyServlet()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
protected String rewriteTarget(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
return URI.create("http://localhost:" + fcgiConnector.getLocalPort() + servletPath + request.getServletPath());
|
return "http://localhost:" + fcgiConnector.getLocalPort() + servletPath + request.getServletPath();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
ServletHolder fcgiServletHolder = new ServletHolder(fcgiServlet);
|
ServletHolder fcgiServletHolder = new ServletHolder(fcgiServlet);
|
||||||
|
@ -19,10 +19,8 @@
|
|||||||
package org.eclipse.jetty.proxy;
|
package org.eclipse.jetty.proxy;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.URI;
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.channels.WritePendingException;
|
import java.nio.channels.WritePendingException;
|
||||||
|
|
||||||
import javax.servlet.ReadListener;
|
import javax.servlet.ReadListener;
|
||||||
import javax.servlet.ServletConfig;
|
import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
@ -39,22 +37,27 @@ import org.eclipse.jetty.client.util.DeferredContentProvider;
|
|||||||
import org.eclipse.jetty.util.Callback;
|
import org.eclipse.jetty.util.Callback;
|
||||||
import org.eclipse.jetty.util.IteratingCallback;
|
import org.eclipse.jetty.util.IteratingCallback;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Proxy servlet based on Servlet 3.1 async I/O.</p>
|
||||||
|
*
|
||||||
|
* @see AsyncMiddleManServlet
|
||||||
|
*/
|
||||||
public class AsyncProxyServlet extends ProxyServlet
|
public class AsyncProxyServlet extends ProxyServlet
|
||||||
{
|
{
|
||||||
private static final String WRITE_LISTENER_ATTRIBUTE = AsyncProxyServlet.class.getName() + ".writeListener";
|
private static final String WRITE_LISTENER_ATTRIBUTE = AsyncProxyServlet.class.getName() + ".writeListener";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException
|
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
|
||||||
{
|
{
|
||||||
ServletInputStream input = request.getInputStream();
|
ServletInputStream input = request.getInputStream();
|
||||||
DeferredContentProvider provider = new DeferredContentProvider();
|
DeferredContentProvider provider = new DeferredContentProvider();
|
||||||
input.setReadListener(newReadListener(proxyRequest, request, provider));
|
input.setReadListener(newReadListener(request, response, proxyRequest, provider));
|
||||||
return provider;
|
return provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ReadListener newReadListener(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider)
|
protected ReadListener newReadListener(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, DeferredContentProvider provider)
|
||||||
{
|
{
|
||||||
return new StreamReader(proxyRequest, request, provider);
|
return new StreamReader(request, response, proxyRequest, provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -108,23 +111,25 @@ public class AsyncProxyServlet extends ProxyServlet
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
protected String rewriteTarget(HttpServletRequest clientRequest)
|
||||||
{
|
{
|
||||||
return delegate.rewriteURI(request);
|
return delegate.rewriteTarget(clientRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected class StreamReader extends IteratingCallback implements ReadListener
|
protected class StreamReader extends IteratingCallback implements ReadListener
|
||||||
{
|
{
|
||||||
private final byte[] buffer = new byte[getHttpClient().getRequestBufferSize()];
|
private final byte[] buffer = new byte[getHttpClient().getRequestBufferSize()];
|
||||||
private final Request proxyRequest;
|
|
||||||
private final HttpServletRequest request;
|
private final HttpServletRequest request;
|
||||||
|
private final HttpServletResponse response;
|
||||||
|
private final Request proxyRequest;
|
||||||
private final DeferredContentProvider provider;
|
private final DeferredContentProvider provider;
|
||||||
|
|
||||||
protected StreamReader(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider)
|
protected StreamReader(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, DeferredContentProvider provider)
|
||||||
{
|
{
|
||||||
this.proxyRequest = proxyRequest;
|
|
||||||
this.request = request;
|
this.request = request;
|
||||||
|
this.response = response;
|
||||||
|
this.proxyRequest = proxyRequest;
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,7 +150,7 @@ public class AsyncProxyServlet extends ProxyServlet
|
|||||||
@Override
|
@Override
|
||||||
public void onError(Throwable t)
|
public void onError(Throwable t)
|
||||||
{
|
{
|
||||||
onClientRequestFailure(proxyRequest, request, t);
|
onClientRequestFailure(request, proxyRequest, response, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -165,7 +170,7 @@ public class AsyncProxyServlet extends ProxyServlet
|
|||||||
{
|
{
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
_log.debug("{} proxying content to upstream: {} bytes", requestId, read);
|
_log.debug("{} proxying content to upstream: {} bytes", requestId, read);
|
||||||
onRequestContent(proxyRequest, request, provider, buffer, 0, read, this);
|
onRequestContent(request, proxyRequest, provider, buffer, 0, read, this);
|
||||||
return Action.SCHEDULED;
|
return Action.SCHEDULED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -184,7 +189,7 @@ public class AsyncProxyServlet extends ProxyServlet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onRequestContent(Request proxyRequest, HttpServletRequest request, DeferredContentProvider provider, byte[] buffer, int offset, int length, Callback callback)
|
protected void onRequestContent(HttpServletRequest request, Request proxyRequest, DeferredContentProvider provider, byte[] buffer, int offset, int length, Callback callback)
|
||||||
{
|
{
|
||||||
provider.offer(ByteBuffer.wrap(buffer, offset, length), callback);
|
provider.offer(ByteBuffer.wrap(buffer, offset, length), callback);
|
||||||
}
|
}
|
||||||
|
@ -26,12 +26,12 @@ import java.util.LinkedList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.UnavailableException;
|
import javax.servlet.UnavailableException;
|
||||||
import javax.servlet.http.Cookie;
|
import javax.servlet.http.Cookie;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.eclipse.jetty.client.api.Response;
|
||||||
import org.eclipse.jetty.util.URIUtil;
|
import org.eclipse.jetty.util.URIUtil;
|
||||||
|
|
||||||
public class BalancerServlet extends ProxyServlet
|
public class BalancerServlet extends ProxyServlet
|
||||||
@ -130,7 +130,7 @@ public class BalancerServlet extends ProxyServlet
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
protected String rewriteTarget(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
BalancerMember balancerMember = selectBalancerMember(request);
|
BalancerMember balancerMember = selectBalancerMember(request);
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
@ -139,7 +139,7 @@ public class BalancerServlet extends ProxyServlet
|
|||||||
String query = request.getQueryString();
|
String query = request.getQueryString();
|
||||||
if (query != null)
|
if (query != null)
|
||||||
path += "?" + query;
|
path += "?" + query;
|
||||||
return URI.create(balancerMember.getProxyTo() + "/" + path).normalize();
|
return URI.create(balancerMember.getProxyTo() + "/" + path).normalize().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private BalancerMember selectBalancerMember(HttpServletRequest request)
|
private BalancerMember selectBalancerMember(HttpServletRequest request)
|
||||||
@ -215,7 +215,7 @@ public class BalancerServlet extends ProxyServlet
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String filterResponseHeader(HttpServletRequest request, String headerName, String headerValue)
|
protected String filterServerResponseHeader(HttpServletRequest request, Response serverResponse, String headerName, String headerValue)
|
||||||
{
|
{
|
||||||
if (_proxyPassReverse && REVERSE_PROXY_HEADERS.contains(headerName))
|
if (_proxyPassReverse && REVERSE_PROXY_HEADERS.contains(headerName))
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,6 @@ import java.io.InputStream;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import javax.servlet.AsyncContext;
|
import javax.servlet.AsyncContext;
|
||||||
import javax.servlet.ServletConfig;
|
import javax.servlet.ServletConfig;
|
||||||
import javax.servlet.ServletContext;
|
import javax.servlet.ServletContext;
|
||||||
@ -42,25 +41,21 @@ import org.eclipse.jetty.http.HttpVersion;
|
|||||||
import org.eclipse.jetty.util.Callback;
|
import org.eclipse.jetty.util.Callback;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asynchronous ProxyServlet.
|
* <p>Proxy servlet based on Servlet 3.0 asynchronous request/response.</p>
|
||||||
* <p/>
|
* <p>Forwards requests to another server either as a standard web reverse proxy
|
||||||
* Forwards requests to another server either as a standard web reverse proxy
|
* (as defined by RFC2616) or as a transparent reverse proxy.</p>
|
||||||
* (as defined by RFC2616) or as a transparent reverse proxy.
|
* <p>To facilitate JMX monitoring, the {@link HttpClient} instance is set as
|
||||||
* <p/>
|
* context attribute, prefixed with the servlet's name and exposed by the
|
||||||
* To facilitate JMX monitoring, the {@link HttpClient} instance is set as context attribute,
|
* mechanism provided by {@link ServletContext#setAttribute(String, Object)}.</p>
|
||||||
* prefixed with the servlet's name and exposed by the mechanism provided by
|
* <p>The following init parameters may be used to configure the servlet:</p>
|
||||||
* {@link ServletContext#setAttribute(String, Object)}.
|
|
||||||
* <p/>
|
|
||||||
* The following init parameters may be used to configure the servlet:
|
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>hostHeader - forces the host header to a particular value</li>
|
* <li>hostHeader - forces the host header to a particular value</li>
|
||||||
* <li>viaHost - the name to use in the Via header: Via: http/1.1 <viaHost></li>
|
* <li>viaHost - the name to use in the Via header: Via: http/1.1 <viaHost></li>
|
||||||
* <li>whiteList - comma-separated list of allowed proxy hosts</li>
|
* <li>whiteList - comma-separated list of allowed proxy hosts</li>
|
||||||
* <li>blackList - comma-separated list of forbidden proxy hosts</li>
|
* <li>blackList - comma-separated list of forbidden proxy hosts</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* <p/>
|
* <p>In addition, see {@link #createHttpClient()} for init parameters used to configure
|
||||||
* In addition, see {@link #createHttpClient()} for init parameters used to configure
|
* the {@link HttpClient} instance.</p>
|
||||||
* the {@link HttpClient} instance.
|
|
||||||
*
|
*
|
||||||
* @see ConnectHandler
|
* @see ConnectHandler
|
||||||
*/
|
*/
|
||||||
@ -71,7 +66,7 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
{
|
{
|
||||||
final int requestId = getRequestId(request);
|
final int requestId = getRequestId(request);
|
||||||
|
|
||||||
URI rewrittenURI = rewriteURI(request);
|
String rewrittenTarget = rewriteTarget(request);
|
||||||
|
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
{
|
{
|
||||||
@ -79,20 +74,20 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
if (request.getQueryString() != null)
|
if (request.getQueryString() != null)
|
||||||
uri.append("?").append(request.getQueryString());
|
uri.append("?").append(request.getQueryString());
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
_log.debug("{} rewriting: {} -> {}", requestId, uri, rewrittenURI);
|
_log.debug("{} rewriting: {} -> {}", requestId, uri, rewrittenTarget);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rewrittenURI == null)
|
if (rewrittenTarget == null)
|
||||||
{
|
{
|
||||||
onRewriteFailed(request, response);
|
onProxyRewriteFailed(request, response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Request proxyRequest = getHttpClient().newRequest(rewrittenURI)
|
final Request proxyRequest = getHttpClient().newRequest(rewrittenTarget)
|
||||||
.method(request.getMethod())
|
.method(request.getMethod())
|
||||||
.version(HttpVersion.fromString(request.getProtocol()));
|
.version(HttpVersion.fromString(request.getProtocol()));
|
||||||
|
|
||||||
copyHeaders(request, proxyRequest);
|
copyRequestHeaders(request, proxyRequest);
|
||||||
|
|
||||||
addProxyHeaders(request, proxyRequest);
|
addProxyHeaders(request, proxyRequest);
|
||||||
|
|
||||||
@ -102,25 +97,14 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
proxyRequest.timeout(getTimeout(), TimeUnit.MILLISECONDS);
|
proxyRequest.timeout(getTimeout(), TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
if (hasContent(request))
|
if (hasContent(request))
|
||||||
proxyRequest.content(proxyRequestContent(proxyRequest, request));
|
proxyRequest.content(proxyRequestContent(request, response, proxyRequest));
|
||||||
|
|
||||||
customizeProxyRequest(proxyRequest, request);
|
|
||||||
|
|
||||||
sendProxyRequest(request, response, proxyRequest);
|
sendProxyRequest(request, response, proxyRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
|
||||||
* @deprecated use {@link #copyRequestHeaders(HttpServletRequest, Request)} instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void copyHeaders(HttpServletRequest clientRequest, Request proxyRequest)
|
|
||||||
{
|
{
|
||||||
copyRequestHeaders(clientRequest, proxyRequest);
|
return new ProxyInputStreamContentProvider(request, response, proxyRequest, request.getInputStream());
|
||||||
}
|
|
||||||
|
|
||||||
protected ContentProvider proxyRequestContent(final Request proxyRequest, final HttpServletRequest request) throws IOException
|
|
||||||
{
|
|
||||||
return new ProxyInputStreamContentProvider(proxyRequest, request, request.getInputStream());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Response.Listener newProxyResponseListener(HttpServletRequest request, HttpServletResponse response)
|
protected Response.Listener newProxyResponseListener(HttpServletRequest request, HttpServletResponse response)
|
||||||
@ -128,38 +112,6 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
return new ProxyResponseListener(request, response);
|
return new ProxyResponseListener(request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void onClientRequestFailure(Request proxyRequest, HttpServletRequest request, Throwable failure)
|
|
||||||
{
|
|
||||||
if (_log.isDebugEnabled())
|
|
||||||
_log.debug(getRequestId(request) + " client request failure", failure);
|
|
||||||
proxyRequest.abort(failure);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use {@link #onProxyRewriteFailed(HttpServletRequest, HttpServletResponse)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void onRewriteFailed(HttpServletRequest request, HttpServletResponse response) throws IOException
|
|
||||||
{
|
|
||||||
onProxyRewriteFailed(request, response);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use {@link #onServerResponseHeaders(HttpServletRequest, HttpServletResponse, Response)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void onResponseHeaders(HttpServletRequest request, HttpServletResponse response, Response proxyResponse)
|
|
||||||
{
|
|
||||||
onServerResponseHeaders(request, response, proxyResponse);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: remove in Jetty 9.3, only here for backward compatibility.
|
|
||||||
@Override
|
|
||||||
protected String filterServerResponseHeader(HttpServletRequest clientRequest, Response serverResponse, String headerName, String headerValue)
|
|
||||||
{
|
|
||||||
return filterResponseHeader(clientRequest, headerName, headerValue);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, byte[] buffer, int offset, int length, Callback callback)
|
protected void onResponseContent(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, byte[] buffer, int offset, int length, Callback callback)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -175,59 +127,6 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link #onProxyResponseSuccess(HttpServletRequest, HttpServletResponse, Response)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void onResponseSuccess(HttpServletRequest request, HttpServletResponse response, Response proxyResponse)
|
|
||||||
{
|
|
||||||
onProxyResponseSuccess(request, response, proxyResponse);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated Use {@link #onProxyResponseFailure(HttpServletRequest, HttpServletResponse, Response, Throwable)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void onResponseFailure(HttpServletRequest request, HttpServletResponse response, Response proxyResponse, Throwable failure)
|
|
||||||
{
|
|
||||||
onProxyResponseFailure(request, response, proxyResponse, failure);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use {@link #rewriteTarget(HttpServletRequest)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
|
||||||
{
|
|
||||||
String newTarget = rewriteTarget(request);
|
|
||||||
return newTarget == null ? null : URI.create(newTarget);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use {@link #sendProxyRequest(HttpServletRequest, HttpServletResponse, Request)}
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected void customizeProxyRequest(Request proxyRequest, HttpServletRequest request)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extension point for remote server response header filtering.
|
|
||||||
* The default implementation returns the header value as is.
|
|
||||||
* If null is returned, this header won't be forwarded back to the client.
|
|
||||||
*
|
|
||||||
* @param headerName the header name
|
|
||||||
* @param headerValue the header value
|
|
||||||
* @param request the request to proxy
|
|
||||||
* @return filteredHeaderValue the new header value
|
|
||||||
* @deprecated use {@link #filterServerResponseHeader(HttpServletRequest, Response, String, String)} instead
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
protected String filterResponseHeader(HttpServletRequest request, String headerName, String headerValue)
|
|
||||||
{
|
|
||||||
return headerValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This convenience extension to {@link ProxyServlet} configures the servlet as a transparent proxy.
|
* This convenience extension to {@link ProxyServlet} configures the servlet as a transparent proxy.
|
||||||
* This servlet is configured with the following init parameters:
|
* This servlet is configured with the following init parameters:
|
||||||
@ -251,9 +150,9 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
protected String rewriteTarget(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
return delegate.rewriteURI(request);
|
return delegate.rewriteTarget(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -290,7 +189,7 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
proxyServlet._log.debug(config.getServletName() + " @ " + _prefix + " to " + _proxyTo);
|
proxyServlet._log.debug(config.getServletName() + " @ " + _prefix + " to " + _proxyTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected URI rewriteURI(HttpServletRequest request)
|
protected String rewriteTarget(HttpServletRequest request)
|
||||||
{
|
{
|
||||||
String path = request.getRequestURI();
|
String path = request.getRequestURI();
|
||||||
if (!path.startsWith(_prefix))
|
if (!path.startsWith(_prefix))
|
||||||
@ -311,7 +210,7 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
if (!proxyServlet.validateDestination(rewrittenURI.getHost(), rewrittenURI.getPort()))
|
if (!proxyServlet.validateDestination(rewrittenURI.getHost(), rewrittenURI.getPort()))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return rewrittenURI;
|
return rewrittenURI.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,7 +234,7 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
@Override
|
@Override
|
||||||
public void onHeaders(Response proxyResponse)
|
public void onHeaders(Response proxyResponse)
|
||||||
{
|
{
|
||||||
onResponseHeaders(request, response, proxyResponse);
|
onServerResponseHeaders(request, response, proxyResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -377,9 +276,9 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
public void onComplete(Result result)
|
public void onComplete(Result result)
|
||||||
{
|
{
|
||||||
if (result.isSucceeded())
|
if (result.isSucceeded())
|
||||||
onResponseSuccess(request, response, result.getResponse());
|
onProxyResponseSuccess(request, response, result.getResponse());
|
||||||
else
|
else
|
||||||
onResponseFailure(request, response, result.getResponse(), result.getFailure());
|
onProxyResponseFailure(request, response, result.getResponse(), result.getFailure());
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
_log.debug("{} proxying complete", getRequestId(request));
|
_log.debug("{} proxying complete", getRequestId(request));
|
||||||
}
|
}
|
||||||
@ -387,14 +286,16 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
|
|
||||||
protected class ProxyInputStreamContentProvider extends InputStreamContentProvider
|
protected class ProxyInputStreamContentProvider extends InputStreamContentProvider
|
||||||
{
|
{
|
||||||
|
private final HttpServletResponse response;
|
||||||
private final Request proxyRequest;
|
private final Request proxyRequest;
|
||||||
private final HttpServletRequest request;
|
private final HttpServletRequest request;
|
||||||
|
|
||||||
protected ProxyInputStreamContentProvider(Request proxyRequest, HttpServletRequest request, InputStream input)
|
protected ProxyInputStreamContentProvider(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, InputStream input)
|
||||||
{
|
{
|
||||||
super(input);
|
super(input);
|
||||||
this.proxyRequest = proxyRequest;
|
|
||||||
this.request = request;
|
this.request = request;
|
||||||
|
this.response = response;
|
||||||
|
this.proxyRequest = proxyRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -408,10 +309,10 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
{
|
{
|
||||||
if (_log.isDebugEnabled())
|
if (_log.isDebugEnabled())
|
||||||
_log.debug("{} proxying content to upstream: {} bytes", getRequestId(request), length);
|
_log.debug("{} proxying content to upstream: {} bytes", getRequestId(request), length);
|
||||||
return onRequestContent(proxyRequest, request, buffer, offset, length);
|
return onRequestContent(request, proxyRequest, buffer, offset, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ByteBuffer onRequestContent(Request proxyRequest, final HttpServletRequest request, byte[] buffer, int offset, int length)
|
protected ByteBuffer onRequestContent(HttpServletRequest request, Request proxyRequest, byte[] buffer, int offset, int length)
|
||||||
{
|
{
|
||||||
return super.onRead(buffer, offset, length);
|
return super.onRead(buffer, offset, length);
|
||||||
}
|
}
|
||||||
@ -419,7 +320,7 @@ public class ProxyServlet extends AbstractProxyServlet
|
|||||||
@Override
|
@Override
|
||||||
protected void onReadFailure(Throwable failure)
|
protected void onReadFailure(Throwable failure)
|
||||||
{
|
{
|
||||||
onClientRequestFailure(proxyRequest, request, failure);
|
onClientRequestFailure(request, proxyRequest, response, failure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@ -263,7 +262,7 @@ public class ProxyServletFailureTest
|
|||||||
proxyServlet = new AsyncProxyServlet()
|
proxyServlet = new AsyncProxyServlet()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException
|
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
|
||||||
{
|
{
|
||||||
return new DeferredContentProvider()
|
return new DeferredContentProvider()
|
||||||
{
|
{
|
||||||
@ -282,7 +281,7 @@ public class ProxyServletFailureTest
|
|||||||
proxyServlet = new ProxyServlet()
|
proxyServlet = new ProxyServlet()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
protected ContentProvider proxyRequestContent(Request proxyRequest, HttpServletRequest request) throws IOException
|
protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException
|
||||||
{
|
{
|
||||||
return new BytesContentProvider(content)
|
return new BytesContentProvider(content)
|
||||||
{
|
{
|
||||||
@ -412,9 +411,4 @@ public class ProxyServletFailureTest
|
|||||||
((StdErrLog)Log.getLogger(ServletHandler.class)).setHideStacks(false);
|
((StdErrLog)Log.getLogger(ServletHandler.class)).setHideStacks(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface Function<T, R>
|
|
||||||
{
|
|
||||||
public R apply(T arg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user