Code, damit ein Java-Servlet als Proxy fungiert?

Ich habe zwei Java-Webanwendungen mit einem einzelnen Servlet, das einer bestimmten URL zugeordnet wird:

red.war/
    WEB-INF/classes
        com.me.myorg.red.RedServlet (maps to http://red.example.com/doStuff)
blue.war/
    WEB-INF/classes
        com.me.myorg.blue.BlueServlet (maps to http://blue.example.com/doStuff)

Ich möchte diese Anwendung (ich bezeichne sie als meine "Backend-Apps") hinter eine "Proxy-App" (Servlet) stellen, die entscheidet, welche dieser beiden Apps letztendlich eine clientseitige Anfrage bearbeitet.

Diese Proxy-Web-App nimmt eine eingehende HTTP-Anfrage entgegen und bestimmt, auf welche der 2 "Backend-Apps" (rot oder blau) die Anfrage weitergeleitet werden soll. Die Anfrage wird dann an eine der beiden weitergeleitethttp://red.example.com/doStuff (und dann bearbeitet vonRedServlet#doGet(...)) oderhttp://blue.example.com/doStuff (und dann bearbeitet vonBlueServlet#doGet(...)). Die zurückgegebene Antwort von der Backend-App (auch hier entwederRedServlet#doGet(...) oderBlueServlet#doGet(...)) würde dann an das Proxy-Servlet und schließlich an den Client zurückgegeben.

Mit anderen Worten, im Pseudocode:

public class ProxyServlet extends HttpServlet {
    @Override
    public doGet(HttpServletRequest request, HttpServletResponse response) {
        String forwardingAddress;
        if(shouldBeRed(request))
            forwardingAddress = "http://red.example.com/doStuff";
        else
            forwardingAddress = "http://blue.example.com/doStuff";

        PrintWriter writer = response.getWriter();

        writer.write(getResponseFromBackend(forwardingAddress, request));
    }

    private String getResponseFromBackend(String addr, HttpServletRequest req) {
        // Somehow forward req to addr and get HTML response...
    }
}

Ist das möglich? Wenn ja, wie und welchen Code müsste ich schreiben, damit es funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage