[
https://issues.apache.org/jira/browse/FELIX-3754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13497859#comment-13497859
]
Felix Meschberger commented on FELIX-3754:
------------------------------------------
Yes, but this gets tricky to solve, I would assume.
In the simple immediate or delayed component use case we could just introduce
another field, something like "tmpImplementationObject" which is considered by
the ImmediateComponentManager.bind/unbind/update methods.
Its getting more complicated for the service factory component case where more
than one instance may exist and be "in creation". So we would have a
tmpImplentationObjects set for the bind/unbind/update methods ?
Will try to build a patch
> Services registered from within the activate method may not be bound
> --------------------------------------------------------------------
>
> Key: FELIX-3754
> URL: https://issues.apache.org/jira/browse/FELIX-3754
> Project: Felix
> Issue Type: Bug
> Components: Declarative Services (SCR)
> Affects Versions: scr-1.6.2
> Reporter: Felix Meschberger
> Assignee: Felix Meschberger
> Fix For: scr-1.6.4
>
>
> The Sling POST Servlet registers a number of services in the activate method
> and expects these services to be bound to itself. With SCR 1.6.0 this worked
> because each component instance had its dependency managers configured with
> its component instance.
> As of SCR 1.6.2 the DependencyManager instances are shared amongst all
> component instances and thus don't have a reference to the component
> instances. Instead actually bind, unbind and update services the
> DependencyManager instances call the respective component manager which then
> dispatches to the component instances.
> At the point in time when the activate method is called (in the
> ImmediateComponentManager.createComponentInstance method) the actual
> component instance is not "registered" with the component manager yet and
> thus a bind call while the activate method is called cannot be satisfied.
> To fix this, the component instance must be "registered" with the component
> manager before calling the activate method. If the activate method fails, the
> instance must of course be "unregistered" again.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira