我試圖切換到使用app.yaml而不是web.xml和app-engine-web.xml。我已經嘗試按照文檔忠實,但我從appconfig.cmd update <my-war-directory>
得到一個錯誤,說當爲處理程序指定servlet時,爲GAE/Java解析app.yaml時出錯
Reading application configuration data...
Bad configuration: Line 18, column 13: Error setting property 'handlers' on class: com.google.apphosting.utils.config.AppYaml
Caused by: Line 18, column 13: Error setting property 'handlers' on class: com.google.apphosting.utils.config.AppYaml
Please see the logs [C:\Users\<blah blah>\appcfg3710135744474388957.log] for further information.
在指定的日誌文件中,我看到一個堆棧轉儲行:
com.google.appengine.repackaged.net.sourceforge.yamlbeans.tokenizer.Tokenizer$TokenizerException: Line 18, column 13: Found a mapping value where it is not allowed.
下面是我的文件(行號手動添加):
1 application: my-app
2 version: 1
3 runtime: java
4 threadsafe: true
5
6 public_root: /static
7
8 static_files:
9 - include: /**
10
11 welcome_files:
12 - index.html
13
14 system_properties:
15 java.util.logging.config.file: WEB-INF/logging.properties
16
17 handlers:
18 - url: /user/*
19 servlet: org.restlet.ext.servlet.ServerServlet
20 name: user
21 init_params:
22 org.restlet.application: com.my-app.server.resource.user.UserApplication
23 org.restlet.clients: HTTP HTTPS
與試驗後,一些YAML網絡上的驗證器,其實我覺得是抱怨19行,其中列13點指向「servlet」後面的「:」字符。但這種用法看起來與https://developers.google.com/appengine/docs/java/configyaml/appconfig_yaml#Required_Elements
我知道我在做一些愚蠢的文件完全一致,但我很爲難。
呃。在懷疑一些看不見的與空白有關的問題後,我決定再次從頭開始輸入它,並且它工作。然後,與之前的版本相比,我確定問題是由於「servlet」這一行縮進了一個額外的空間。它需要在它上面的「url」中的「u」下排隊。我猜如果我對YAML更熟悉,這可能是顯而易見的,但作爲YAML noob,錯誤沒有幫助。另外,我遵循的developers.google.com上的示例有令人不快的縮進。 –
出於好奇,你爲什麼要切換到.yaml? –
@ DaveW.Smith在閱讀了這篇文章後,它看起來更清晰和更緊湊(在我的應用程序中,61行app.yaml替換了大約150行的組合web.xml和appengine-web.xml),所以我我以爲我會試試看。 –