Hi all,
IMHO we have an issue with Sling's access to Servlet registered as
services and provided as Resources in the Resource tree for handling
requests:
* The Servlet services are eagerly accessed and initialized
by the Sling Engine.
* The Servlet services are eagerly accessed by the Servlet
Resolver bundle to register them as Resources.
* Initialization and use of the servlets is split between the
Sling Engine and Servlet Resolver.
I think we should change this as follows:
* All Servlet service handling is concentrated in the Servlet
Resolver.
* Servlet services are accessed on-demand only. This works
because all information to register a servlet in the
resource tree is provided as service registration properties
This allows for the registration of Servlet services as service
factories, e.g. by declaring the servlets as delayed compoents. This in
turn enables us to optimize resource consumption:
* Upon startup, the servlets need not be instantiated, only
the ServiceFactory needs to be registered.
* As a consequence class loaders creation might be delayed.
* Memory can be conserved by not creating objects which are
never used or not used often.
* Overall startup performance could be increased.
WDYT ?
Regards
Felix