[
https://issues.apache.org/jira/browse/ARIES-1407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15562121#comment-15562121
]
metatech commented on ARIES-1407:
---------------------------------
Hi Grzegorz,
I debugged into the class ServiceRecipe and here is the timeline of the called
methods (in pseudo/abbreviated code) :
1.
{code}
static { // static initialization
initialServiceRegistration = true;
}
{code}
2.
{code}
private void createService() {
assert(initialServiceRegistration=true);
// Stack trace A
...
// When the service is first requested, we need to create listeners and
call them
if (!initialServiceRegistration && listeners == null) {
// Never executed
}
}
{code}
3.
{code}
public void register() {
...
initialServiceRegistration = false;
// Patch : add call to listener
// Stack trace B
}
{code}
Stack trace A
{code}
at
org.apache.aries.blueprint.container.ServiceRecipe.invokeListeners(ServiceRecipe.java:345)
at
org.apache.aries.blueprint.container.ServiceRecipe.createService(ServiceRecipe.java:315)
at
org.apache.aries.blueprint.container.ServiceRecipe.internalGetService(ServiceRecipe.java:252)
at
org.apache.aries.blueprint.container.ServiceRecipe.internalCreate(ServiceRecipe.java:148)
at
org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
at
org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
at
org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:688)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:383)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
{code}
Stack trace B
{code}
at
com.mycompany.blueprint.ExitGracePeriodNotifier.register(ExitGracePeriodNotifier.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:297)
at
org.apache.aries.blueprint.utils.ServiceListener.invokeMethod(ServiceListener.java:97)
at
org.apache.aries.blueprint.utils.ServiceListener.register(ServiceListener.java:59)
at
org.apache.aries.blueprint.container.ServiceRecipe.invokeListeners(ServiceRecipe.java:336)
at
org.apache.aries.blueprint.container.ServiceRecipe.register(ServiceRecipe.java:198)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.registerServices(BlueprintContainerImpl.java:710)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:385)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
{code}
> Service (un)registration listener not called anymore
> ----------------------------------------------------
>
> Key: ARIES-1407
> URL: https://issues.apache.org/jira/browse/ARIES-1407
> Project: Aries
> Issue Type: Bug
> Components: Blueprint
> Environment: Servicemix 5.4.1
> Reporter: metatech
> Attachments: blueprint_registration_listener_fix_v2.patch
>
>
> Service (un)registration listeners are not called anymore since Blueprint
> 1.4.0.
> There are 2 booleans in the "ServiceRecipe" class which are tested against
> the wrong values.
> Please find a patch which makes them work again with Blueprint 1.4.3.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)