Revision created by MOE tool push_codebase.
[gae.git] / java / src / main / com / google / appengine / tools / development / BackendServers.java
blob22e9ec596db193b52e90556bb4974225756685a5
1 // Copyright 2011 Google Inc. All Rights Reserved.
3 package com.google.appengine.tools.development;
5 import com.google.common.annotations.VisibleForTesting;
7 import org.mortbay.jetty.webapp.WebAppContext;
9 import java.io.IOException;
11 import javax.servlet.RequestDispatcher;
12 import javax.servlet.ServletException;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
16 /**
17 * Controls backend servers configured in appengine-web.xml. Each server is
18 * started on a separate port. All servers run the same code as the main app.
22 public class BackendServers extends AbstractBackendServers {
24 private static BackendServers instance = new BackendServers();
26 public static BackendServers getInstance() {
27 return instance;
30 @VisibleForTesting
31 BackendServers() {
33 /**
34 * Forward a request to a specific server and instance. This will call the
35 * specified instance request dispatcher so the request is handled in the
36 * right server context.
38 @Override
39 protected void forwardToServer(String requestedServer, int instance, HttpServletRequest hrequest,
40 HttpServletResponse hresponse) throws IOException, ServletException {
41 ServerWrapper server = getServerWrapper(requestedServer, instance);
42 logger.finest("forwarding request to server: " + server);
43 WebAppContext jettyContext =
44 (WebAppContext) server.getContainer().getAppContext().getContainerContext();
45 RequestDispatcher requestDispatcher =
46 jettyContext.getServletContext().getRequestDispatcher(hrequest.getRequestURI());
47 requestDispatcher.forward(hrequest, hresponse);