diff options
Diffstat (limited to 'jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java')
-rw-r--r-- | jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java | 140 |
1 files changed, 23 insertions, 117 deletions
diff --git a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java index d374c35763..2c45df510e 100644 --- a/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java +++ b/jetty-proxy/src/main/java/org/eclipse/jetty/proxy/ProxyServlet.java @@ -20,7 +20,6 @@ package org.eclipse.jetty.proxy; import java.io.IOException; import java.io.InputStream; -import java.net.URI; import java.nio.ByteBuffer; import java.util.concurrent.TimeUnit; @@ -53,7 +52,7 @@ public class ProxyServlet extends AbstractProxyServlet { final int requestId = getRequestId(request); - URI rewrittenURI = rewriteURI(request); + String rewrittenTarget = rewriteTarget(request); if (_log.isDebugEnabled()) { @@ -61,20 +60,20 @@ public class ProxyServlet extends AbstractProxyServlet if (request.getQueryString() != null) uri.append("?").append(request.getQueryString()); 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; } - final Request proxyRequest = getHttpClient().newRequest(rewrittenURI) + final Request proxyRequest = getHttpClient().newRequest(rewrittenTarget) .method(request.getMethod()) .version(HttpVersion.fromString(request.getProtocol())); - copyHeaders(request, proxyRequest); + copyRequestHeaders(request, proxyRequest); addProxyHeaders(request, proxyRequest); @@ -84,64 +83,22 @@ public class ProxyServlet extends AbstractProxyServlet proxyRequest.timeout(getTimeout(), TimeUnit.MILLISECONDS); if (hasContent(request)) - proxyRequest.content(proxyRequestContent(proxyRequest, request)); - - customizeProxyRequest(proxyRequest, request); + proxyRequest.content(proxyRequestContent(request, response, proxyRequest)); sendProxyRequest(request, response, proxyRequest); } - /** - * @deprecated use {@link #copyRequestHeaders(HttpServletRequest, Request)} instead - */ - @Deprecated - protected void copyHeaders(HttpServletRequest clientRequest, Request proxyRequest) + protected ContentProvider proxyRequestContent(HttpServletRequest request, HttpServletResponse response, Request proxyRequest) throws IOException { - copyRequestHeaders(clientRequest, proxyRequest); - } - - protected ContentProvider proxyRequestContent(final Request proxyRequest, final HttpServletRequest request) throws IOException - { - return new ProxyInputStreamContentProvider(proxyRequest, request, request.getInputStream()); + return new ProxyInputStreamContentProvider(request, response, proxyRequest, request.getInputStream()); } + @Override protected Response.Listener newProxyResponseListener(HttpServletRequest request, HttpServletResponse 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) { try @@ -158,62 +115,9 @@ 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; - } - - /** * <p>Convenience extension of {@link ProxyServlet} that offers transparent proxy functionalities.</p> * - * @see TransparentDelegate + * @see org.eclipse.jetty.proxy.AbstractProxyServlet.TransparentDelegate */ public static class Transparent extends ProxyServlet { @@ -227,9 +131,9 @@ public class ProxyServlet extends AbstractProxyServlet } @Override - protected URI rewriteURI(HttpServletRequest request) + protected String rewriteTarget(HttpServletRequest request) { - return URI.create(delegate.rewriteTarget(request)); + return delegate.rewriteTarget(request); } } @@ -253,7 +157,7 @@ public class ProxyServlet extends AbstractProxyServlet @Override public void onHeaders(Response proxyResponse) { - onResponseHeaders(request, response, proxyResponse); + onServerResponseHeaders(request, response, proxyResponse); } @Override @@ -295,9 +199,9 @@ public class ProxyServlet extends AbstractProxyServlet public void onComplete(Result result) { if (result.isSucceeded()) - onResponseSuccess(request, response, result.getResponse()); + onProxyResponseSuccess(request, response, result.getResponse()); else - onResponseFailure(request, response, result.getResponse(), result.getFailure()); + onProxyResponseFailure(request, response, result.getResponse(), result.getFailure()); if (_log.isDebugEnabled()) _log.debug("{} proxying complete", getRequestId(request)); } @@ -305,14 +209,16 @@ public class ProxyServlet extends AbstractProxyServlet protected class ProxyInputStreamContentProvider extends InputStreamContentProvider { + private final HttpServletResponse response; private final Request proxyRequest; private final HttpServletRequest request; - protected ProxyInputStreamContentProvider(Request proxyRequest, HttpServletRequest request, InputStream input) + protected ProxyInputStreamContentProvider(HttpServletRequest request, HttpServletResponse response, Request proxyRequest, InputStream input) { super(input); - this.proxyRequest = proxyRequest; this.request = request; + this.response = response; + this.proxyRequest = proxyRequest; } @Override @@ -326,10 +232,10 @@ public class ProxyServlet extends AbstractProxyServlet { if (_log.isDebugEnabled()) _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); } @@ -337,7 +243,7 @@ public class ProxyServlet extends AbstractProxyServlet @Override protected void onReadFailure(Throwable failure) { - onClientRequestFailure(proxyRequest, request, failure); + onClientRequestFailure(request, proxyRequest, response, failure); } } } |