2010-11-19 118 views
2

我在AppEngine上运行Java应用程序,并且我想使用app.yaml。我读过的文档和创建的WEB-INF文件夹内的app.yaml应用具有以下内容在Google AppEngine中使用app.yaml

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

welcome_files: 
    - index.jsp 
    - index.html 

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

哪里myprojectname是项目的名称。

然而,当我访问本地主机:8888 /遗忘或本地主机:8888 /遗忘/我得到一个

HTTP错误404

问题访问/遗忘。原因:

NOT_FOUND 

可能是什么原因?

这是目录的结构,而不是使用myprojectname.CronUpdater的(截)

[email protected]:~/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 

... 
+0

你也不需要'api_version:1'行 – 2011-06-27 18:27:38

回答

2

,你需要列出的servlet的完整的包和类。所以,如果CronUpdater是包

com.mycompany.servlets

你需要把

servlet: com.mycompany.servlets.CronUpdater

在你的app.yaml。

+0

但是当我运行服务器。使用运行 - >运行..它编译,就好像它忽略了.yaml文件。 – user513590 2010-11-19 19:35:01

+1

当然,它编译,javac不知道app.yml文件。您需要将该servlet的完全限定类名称或该容器找不到您的代码。 – fedesilva 2010-11-19 20:15:30

2

在AppEngine上,有两个环境类型(截至目前):

  • 灵活的环境
  • 标准环境

你不能在同一时间使用appengine-web.xmlapp.yaml

  • Flexible environ换货使用app.yaml来配置所有的AppEngine需要知道
  • 标准环境使用appengine-web.xmllogging.properties

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

Google Cloud Platform doc,你应该有:

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> 

希望这有助于!

相关问题