Hey there,
Thanks for providing me with your appengine-web.xml and web.xml. At the moment, the platform limits the number of URLMap handlers to 100. This can be found in the appinfo.py file in your own gcloud SDK installation (<your-cloud-sdk-dir>/platform/google_appengine/google/appengine/api/appinfo.py on line 2089). The definition of URLMap can be found in the same find with a helpful description on line 917.
When it comes to Java applications, filter mappings, servlet mappings are the main contributors to URLMap handlers. Basically, any entry that maps a URL to an endpoint will be a URLMap. Looking at some of your servlet mappings, you may be able to save some maps in the following ways
- Break down the application into many smaller services. Your REST API servlet(s) for instance could be deploy as a separate service, thus taking advantage of the subdomain URL-naming scheme of App Engine services like api.your-domain.com/v1/useful-method. Essentially, the change requires that part of the URL be moved from the path to the subdomain.
- Use a CDN or Cloud Storage to serve static resources. In your appengine-web.xml, I could see several <include>. Cloud Storage is an excellent service for serving static resources.
- In some cases, a single servlet could serve related paths such as /_ah/*. This example can save you from having 3 single endpoints mappings for /_ah/start, /_ah/health, /_ah/stop.
I hope this addresses your questions and helps you trim down some URL mappings.