Mit der Jetty-proxy im standalone-Jetty-Anwendung

Bin ich der Untersuchung mit Jetty 9 als proxy, über die eigenständige Steg, nicht eingebettete Jetty. Ich habe mir für die Hilfe in vielen Orten:

Meisten davon beziehen sich auf embedded Jetty:

Diese Frage ist entlang der gleichen Linien:

...aber die einzige Antwort ist ein link zu einer Seite, enthält einige Parameter für den proxy, aber keine Beispiele oder andere hilfreiche Hinweise.

Zur Frage...

Habe ich eine Erweiterung jettys ProxyServlet die überschreibt die rewriteURI() Methode, um wirklich ändern Sie die Anfrage auf eine andere URL. Diese benutzerdefinierten proxy funktioniert, wenn Sie läuft Jetty eingebettet, aber wenn ich mit einem web.xml Datei und das jetty-maven-plugin, um einen Krieg zu implementieren, funktioniert Sie nicht mehr.

Wenn ich eine Anfrage habe, kann ich die Anwendung Debuggen und sehen, dass es in der rewriteURI() Methode, es dann Anrufe jettys ProxyServlet ist service() Methode, die ausgeführt wird, bis zur Fertigstellung, aber dann passiert nichts. Die Seite bleibt leer und irgendwann ProxyServlet ist onResponseFailure() ist mit einer TimeoutException, "Total timeout elapsed". Dev-tools zeigt die Anforderung empfangen, einen 504 Gateway-Timeout.

Scheint es, als ob etwas fehlt, wie die Dinge verbunden sind, aber ich kann nicht sagen, was es sein könnte. Jegliche Hilfe würde sehr geschätzt werden. Ich habe web.xml - und custom-proxy (ProxyServletExtension) unten.

web.xml

<servlet>
    <servlet-name>proxy</servlet-name>
    <servlet-class>org.example.ProxyServletExtension</servlet-class>
    <init-param>
        <param-name>maxThreads</param-name>
        <param-value>1</param-value>
    </init-param>
    <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
    <servlet-name>proxy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

ProxyServletExtension.java

...
import org.eclipse.jetty.proxy.ProxyServlet;
...
public class ProxyServletExtension extends ProxyServlet {
    @Override
    protected URI rewriteURI(HttpServletRequest request) {
        //Forward all requests to another port on this machine
        String uri = "http://localhost:8060";

        //Take the current path and append it to the new url
        String path = request.getRequestURI();
        uri += path;

        //Add query params
        String query = request.getQueryString();
        if (query != null && query.length() > 0) {
            uri += "?" + query;
        }
        return URI.create(uri).normalize();
    }
}
InformationsquelleAutor mnd | 2014-07-09
Schreibe einen Kommentar