[
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.