2010-11-19 115 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> 

希望這有助於!

相關問題