Felix Meschberger  wrote
> Hi,
> 
> The ScriptHelper.getService(Class) method of the Scripting Core bundle
> implementing the SlingScriptHelper API allows scripts to get access to
> OSGi services. This all works perfectly in that the method just forwards
> the call through to the framework.
> 
> At the end of running the script, the service is then "unget".
> 
> Now, the framework will guard access to the service registry and if a
> lot of requests are asking for a service while processing the request,
> even calling repeatedly for the same service during request processing,
> this may result in a contention on the service registry.
> 
> I wonder if we could do better with this method by caching the services
> not only for the time of processing a component but for longer time,
> either during complete request processing or even in a size constrained
> cache (of course unregistered services will have to be removed).
> 
> WDYT ?
> 
Some time ago I had similar ideas as with a lot of scripts and parallel
requests this seemed to be a bottleneck - however later tests couldn't
proof that.

Anyway, I think we could do a kind of cache which has non-synced access
(copy on write map). This could be a global cache and by listening to
service events we could simply remove stuff from the cache.

Carsten
-- 
Carsten Ziegeler
[email protected]

Reply via email to