在为处理程序指定servlet时,为GAE / Java解析app.yaml时出错

时间:2012-06-13 18:02:53

标签: google-app-engine yaml

我正在尝试切换到使用app.yaml而不是web.xml和app-engine-web.xml。我试图忠实地遵循文档,但是我收到来自appconfig.cmd update <my-war-directory>的错误

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

上的文档完全一致

我确定我做的事情很愚蠢,但我很难过。

2 个答案:

答案 0 :(得分:0)

感谢您对AndyD的精彩投入!文档已更新,以修复有问题的示例代码。

对我来说,使用一些yaml验证器检查yaml文件也很方便。例如: http://data-lint.herokuapp.com/

感谢。

答案 1 :(得分:0)

正如我上面提到的,罪魁祸首是第19-21行的缩进 - 他们需要排在第18行“url”中的“u”之下。