0

编辑:所以我发现 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 网页,或者在生产的情况下,导航到 apppot 页面。

如果需要,这是我的 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
4

1 回答 1

0

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

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

于 2017-05-05T02:41:05.793 回答