繁体   English   中英

在Google AppEngine中使用app.yaml

[英]Using app.yaml in Google AppEngine

我正在AppEngine上运行Java应用程序,并且想使用app.yaml。 我已阅读文档,并在WEB-INF文件夹中创建了一个app.yaml应用,其中包含以下内容

application: myprojectname
version: 1
runtime: java
api_version: 1

welcome_files:
  - index.jsp
  - index.html

handlers:
- url: /oblivion/*
  servlet: myprojectname.CronUpdater

其中myprojectname是项目的名称。

但是当我访问localhost:8888 / oblivion或localhost:8888 / oblivion /时

HTTP错误404

访问/遗忘问题。 原因:

NOT_FOUND

可能是什么原因?

这是目录的结构(被截断)

pratik@pratik-desktop:~/workspace/myprojectname/war$ ls -LR
index.html  index.jsp  WEB-INF

./WEB-INF:
appengine-generated  app.yaml  cron.yaml  logging.properties
appengine-web.xml    classes   lib        web.xml

...

在appengine中,有两种环境类型(截至目前):

  • 灵活的环境
  • 标准环境

您不能同时使用appengine-web.xmlapp.yaml

  • 灵活的环境使用app.yaml来配置appengine需要了解的所有内容
  • 标准环境使用appengine-web.xmllogging.properties

在这里,我假设您想在“ 灵活环境 ”模式下使用appengine。 通常, app.yaml位于main目录内的appengine文件夹中。

通过Google Cloud Platform文档 ,您应该具有:

myprojectname/
 [pom.xml]         (optional, only if you use maven)
 [build.gradle]    (optional, only if you use gradle)
 [index.yaml]      (optional, only if you use cloud datastore)
 [cron.yaml]       (optional, only if you use cron job)
 [dispatch.yaml]   (optional, only if you route to services)
 src/main/
   appengine/
     app.yaml
   java/
     com.example.mycode/
       MyCode.java
   webapp/
     [index.html]
     [index.jsp]
     WEB-INF/
       [web.xml]

最后一件事:应该在web.xml文件中定义处理程序。 app.yaml ,您应该只有:

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

在您的web.xml ,如下所示:

<servlet>
    <servlet>
      <servlet-name>CronUpdater</servlet-name>
      <servlet-path>myprojectname.CronUpdater</servlet-path>
    </servlet>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>CronUpdater</servlet-name>
    <url-pattern>/oblivion/*</url-pattern>
</servlet-mapping>

希望这可以帮助 !

无需使用myprojectname.CronUpdater,而是需要列出Servlet的完整包和类。 因此,如果CronUpdater位于软件包中

com.mycompany.servlets

你需要把

servlet: com.mycompany.servlets.CronUpdater

在您的app.yaml中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM