Código para obter um servlet Java para atuar como um proxy?

Eu tenho dois aplicativos da Web Java que possuem um único servlet que é mapeado para uma URL específica:

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)

Eu quero colocar esses aplicativos (estou chamando-os de meus "aplicativos de back-end") por trás de um "aplicativo de proxy" (servlet) que decidirá qual desses dois aplicativos acabará atendendo a uma solicitação do lado do cliente.

Esse aplicativo da Web de proxy receberia uma solicitação HTTP de entrada e determinaria quais dos dois "aplicativos de back-end" (vermelho ou azul) para encaminhar a solicitação. O pedido seria então encaminhado parahttp://red.example.com/doStuff (e depois processado porRedServlet#doGet(...)) ouhttp://blue.example.com/doStuff (e depois processado porBlueServlet#doGet(...)). A resposta retornada do aplicativo de backend (novamente,RedServlet#doGet(...) ouBlueServlet#doGet(...)) seria então retornado ao servlet proxy e, finalmente, retornado ao cliente.

Em outras palavras, no pseudo-código:

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...
    }
}

Isso é possível? Em caso afirmativo, como e qual código eu precisaria escrever para que funcionasse?

questionAnswers(2)

yourAnswerToTheQuestion