自动启动AppEngine Flexible Server

时间:2017-05-04 17:13:40

标签: java google-app-engine servlets app-engine-flexible

编辑:所以我发现web.xml <load-on-startup>1</load-on-startup>标签是我需要的,但显然它不灵活支持。还有其他选择吗?

所以这可能是一个非常明显的问题,但我无法弄明白......

我有一个AppEngine灵活环境服务器,并使用此servlet。

@SuppressWarnings("serial")
@WebServlet(name = "servlet", value = "/")
public class FirebaseServlet extends HttpServlet {
    private static final String TAG = FirebaseServlet.class.getSimpleName();
    private DatabaseReference reference;

    @Override
    public void init() throws ServletException {
        FirebaseOptions options = ...
        Log.d(TAG, "debug");
    }

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.getWriter().println("Server Running...");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
    }

    @Override
    public void destroy() {
        super.destroy();
    }
}

那么当我运行这个命令时:

mvn clean jetty:run

它将在localhost:8080上运行,但我总是必须实际打开Web浏览器,并导航到localhost:8080,如果我已经在它上面,我每次运行jetty:run命令时都要刷新页面。继续使用localhost / refresh之后,servlet启动,初始化firebase侦听器并打印* Sysout

debug

所以我确定在这里可以忽略一些非常明显的东西,如何让它自动启动servlet?因此,我不必浏览localhost网页,或者在生产的情况下,导航到appspot页面。

如果需要,这是我的App.yaml

runtime: java
env: flex
manual_scaling:
  instances: 1

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

resources:
  cpu: 0.5
  memory_gb: 0.6
  disk_size_gb: 10

env_variables:
  BUCKET_NAME: YOUR-BUCKET-NAME=bucketname.appspot.com

1 个答案:

答案 0 :(得分:0)

您可以使用cron.yaml安排任务,以便它们以特定间隔自动启动。

有关详细信息,请参阅Google Cloud Platform文档https://cloud.google.com/appengine/docs/flexible/java/scheduling-jobs-with-cron-yaml