我在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
访问/oblivion时出现问题。原因:
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
...发布于 2017-02-20 22:51:54
在appengine中,有两种环境类型(目前为止):
您不能同时使用appengine-web.xml和app.yaml:
logging.properties的appengine环境使用app.yaml配置appengine所需的所有内容
在这里,我假设你想在“灵活环境”模式下使用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>希望这能有所帮助!
发布于 2010-11-20 00:22:35
您需要列出servlet的完整包和类,而不是使用myprojectname.CronUpdater。所以如果CronUpdater在包中
com.mycompany.servlets
你需要把你的
servlet: com.mycompany.servlets.CronUpdater
在你的app.yaml里。
https://stackoverflow.com/questions/4226032
复制相似问题