After much debugging and trial-and-error, here's the real problem:
I am using an exploded deployment by linking (ln -s) ROOT.war to a directory on the server.
Unfortunately, in JBoss AS7 you can't do that anymore. In earlier versions, server.xml allowed you to set the Tomcat kludge "allowLinks", but that has disappeared with the new configuration integration.
So the bottom line is, use a real war file or an in-place exploded deployment, don't try symbolic linking to another directory as your war deployment.