I’m trying to switch over to using app.yaml instead of web.xml and app-engine-web.xml. I’ve attempted to follow the documentation faithfully, but I’m getting an error from appconfig.cmd update <my-war-directory> that says
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.
In the indicated log file, I see a stack dump with the line:
com.google.appengine.repackaged.net.sourceforge.yamlbeans.tokenizer.Tokenizer$TokenizerException: Line 18, column 13: Found a mapping value where it is not allowed.
Here’s my file (with line numbers manually added):
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
After experimenting with some YAML validators on the web, I actually think it is complaining about line 19, where column 13 points to the “:” character after “servlet”. But this usage looks totally consistent with the documentation at https://developers.google.com/appengine/docs/java/configyaml/appconfig_yaml#Required_Elements
I’m sure I’m doing something stupid, but I’m stumped.
As I noted above, the culprit was the indentation of lines 19-21 – they need to line up under the “u” in “url” from line 18.