1

Is there a way to determine programmatically the name of service that code is running in on Google App Engine? The only solution I have is to use the http request object in the servlet and inspect the url that was requested and extract it from that. But I would prefer something more globally accessible throughout the service.

Johann
  • 27,536
  • 39
  • 165
  • 279
  • Possible duplicate of [AppEngine service name and version in the GAE flexible env from my code at runtime in Java/Jetty?](https://stackoverflow.com/questions/39728297/appengine-service-name-and-version-in-the-gae-flexible-env-from-my-code-at-runti) – arudzinska Apr 16 '18 at 08:11
  • I updated my question title to include "Standard Environment" as the link you provided is for the Flexible Environment. – Johann Apr 16 '18 at 08:57

1 Answers1

0

You can use the method getModuleId() in Api Proxy.

So, a Servlet example:

import com.google.apphosting.api.ApiProxy;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet {
  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    resp.setContentType("text/plain");
    ApiProxy.Environment env = ApiProxy.getCurrentEnvironment();
    resp.getWriter().print("Service: ");
    resp.getWriter().println(env.getModuleId());
  }
}

This will print the name of the Service (Services were previously called Modules, that's why this method is named like that)

Mangu
  • 3,160
  • 2
  • 25
  • 42