After upgrading to CQ5.4, custom servlets registered at virtual paths stop working and requests fall back to the Sling Default GET Servlet.
This behavior is actually by design and subject of a security-hardening measure introduced with SLING-1512: the Sling Servlet Resolver has been enhanced to make execution paths of servlets configurable.
Per default, CQ5.4 ships with the following execution paths and servlets enabled:
Please note that individual servlets need to be suffixed with '.servlet' . It is recommended to overlay the existing default configuration at /libs/sling/config/org.apache.sling.servlets.resolver.SlingServletResolver in /apps and add custom servlet-paths.