[ 
https://issues.apache.org/jira/browse/SLING-1848?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12923126#action_12923126
 ] 

Felix Meschberger commented on SLING-1848:
------------------------------------------

I think this is fix is not along the intent of SLING- 1545 n but is probably ok 
for the short-term.

The problem with the SLING-1545 implementation is that the maneger is dropped 
but the registered service (which is dropped) is not unregistered....  

I think it is about time to consider something completely different for the 
ScriptManager: We create our own implementation which allows us to unregister 
ScriptEngineFactory instances - something which is not foreseen in the standard 
ScriptManager. Thus we could setup the ScriptEngineManager once and for all and 
just add/remove ScriptEngineFactories as they come and go.

Another option would be to register a Proxy object as the service which in the 
back end accesses the real ScriptEngineManager on-demand thus forcing the 
ScriptEngineManager to be recreated should it be removed.

> registration (or unregistration) of a ScriptEngineFactory doesn't cause the 
> ScriptEngineManager service to be re-registered
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SLING-1848
>                 URL: https://issues.apache.org/jira/browse/SLING-1848
>             Project: Sling
>          Issue Type: Bug
>          Components: Scripting
>            Reporter: Justin Edelson
>            Assignee: Justin Edelson
>            Priority: Blocker
>             Fix For: Scripting Core 2.0.12
>
>
> ScriptEngineManagerFactory.refreshScriptEngineManager() handles the 
> registration of an OSGi service of the ScriptEngineManager. This is used, 
> amongst other places, by SlingScriptAdapterFactory.
> However, refreshScriptEngineManager() is *only* called from activate() and 
> getScriptEngineManager() (and in the latter case, only if the 
> scriptEngineManager is null). Although bindScriptEngineManager() (and unbind) 
> null out scriptEngineManager, they do not call refreshScriptEngineManager(). 
> As a result, new ScriptEngineFactory services are not effective with this 
> call sequence:
> 1) activate()
> 2) bindScriptEngineManager()
> 3) try adapting a script to a javax.servlet.Servlet
> This can be worked around (albeit poorly IMHO) by going to the Configuration 
> Status page in the web console because this causes getScriptEngineManager() 
> to be called when scriptEngineManager is null, thus causing 
> refreshScriptEngineManager() to be called.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to