首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在谷歌AppEngine中使用app.yaml

在谷歌AppEngine中使用app.yaml
EN

Stack Overflow用户
提问于 2010-11-19 22:40:16
回答 2查看 4.3K关注 0票数 2

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

代码语言:javascript
复制
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

访问/oblivion时出现问题。原因:

代码语言:javascript
复制
NOT_FOUND

可能的原因是什么?

这是目录的结构(截断)

代码语言:javascript
复制
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

...
EN

回答 2

Stack Overflow用户

发布于 2017-02-20 22:51:54

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

  • Flexible Environment
  • Standard Environment

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

  • Flexible环境和使用know
  • Standard和logging.properties

的appengine环境使用app.yaml配置appengine所需的所有内容

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

Google Cloud Platform doc中,您应该有:

代码语言:javascript
复制
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中,您应该只需要:

代码语言:javascript
复制
handlers:
  - url: /.*
    script: this field is required, but ignored

在你的web.xml中是这样的:

代码语言:javascript
复制
<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>

希望这能有所帮助!

票数 4
EN

Stack Overflow用户

发布于 2010-11-20 00:22:35

您需要列出servlet的完整包和类,而不是使用myprojectname.CronUpdater。所以如果CronUpdater在包中

com.mycompany.servlets

你需要把你的

servlet: com.mycompany.servlets.CronUpdater

在你的app.yaml里。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4226032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档