I'm wondering if you might be suffering from this Apache Felix SCR bug: https://issues.apache.org/jira/plugins/servlet/mobile#issue/FELIX-5974
- Ray On Sat, Sep 21, 2019, 11:53 Alain Picard via osgi-dev, < osgi-dev@mail.osgi.org> wrote: > Ray, > > The service being "destroyed" is BaViewPointsViewModel and you can see > that ViewpointsViewModeTabViewModel has an instance of it. So I want to > make sure that it is correctly released so that SCR can then deactivate > ViewpointsViewModeTabViewModel and whatever else depended on > ViewpointsViewModeTabViewModel and on and on. > > Alain > > > On Sat, Sep 21, 2019 at 10:34 AM Raymond Auge via osgi-dev < > osgi-dev@mail.osgi.org> wrote: > >> Hey Alain, >> >> Just trying to understand the use case better, so a couple questions: >> >> Since your component is prototype scope, and if no one has any instances >> of it why bother disabling it, isn't it effectively only a fairly inert >> service reference at that point? >> Are you saying that when released as a prototype instance, it should >> never be used again, ever? >> Perhaps the service you described above could be a factory for instances >> of `ZkViewModel, BaItem, MasterDetailTopMenuListener` instead of being one >> itself. >> >> - Ray >> >> On Sat, Sep 21, 2019 at 5:05 AM Alain Picard via osgi-dev < >> osgi-dev@mail.osgi.org> wrote: >> >>> I'm facing a case where the UI framework is sending a destroy request >>> when a page is destroyed and I want to use that to also deactivate the >>> component, so that its "host" can then automatically get deactivated and so >>> on so forth as needed. >>> >>> As shown below I tried to use disableComponent. That results in some >>> errors as it runs under [SCR Component Actor] thread that is not session >>> aware and also looking at the stack trace it seems to be deactivating the >>> full user session, which is not what I'm expecting. >>> >>> So am I deactivating correctly here, how can I make sure this runs in a >>> session aware thread (as I don't control here this separate thread >>> launch/run) and is there a utility to better understand service instance >>> dependencies that would allow tracking the impact of a deactivation. >>> >>> Cheers, >>> Alain >>> >>> >>> >>> Here's the case: >>> @Component(service = ViewpointsViewModeTabViewModel.class, scope = >>> ServiceScope.PROTOTYPE) >>> public class ViewpointsViewModeTabViewModel extends >>> ViewModeTabboxItemViewModel { >>> ... >>> @Reference(scope = ReferenceScope.PROTOTYPE_REQUIRED) >>> private BaViewPointsViewModel baViewPointsViewModel; >>> ... >>> } >>> >>> and >>> @Component(service = BaViewPointsViewModel.class, >>> scope=ServiceScope.PROTOTYPE) >>> @Init(superclass = true) >>> public final class BaViewPointsViewModel extends >>> ViewPointsViewModel<ViewpointTabboxItemViewModel> >>> implements ZkViewModel, BaItem, MasterDetailTopMenuListener { >>> ... >>> @Activate >>> private void activate(ComponentContext context, Map<String, Object> >>> properties) { >>> this.context = context; >>> pid = (String)properties.get(ComponentConstants.COMPONENT_NAME); >>> >>> log.trace("Activating {}/{}", getClass(), >>> System.identityHashCode(this)); //$NON-NLS-1$ >>> initTabs(); >>> } >>> @Deactivate >>> private void deactivate() { >>> log.trace("Deactivating {}/{}", getClass(), >>> System.identityHashCode(this)); //$NON-NLS-1$ >>> super.zkDestroy(); >>> ungetServices(); >>> clearTabs(); >>> } >>> >>> @Override >>> @Destroy >>> public void zkDestroy() { >>> log.trace("Destroying {}/{}", getClass(), >>> System.identityHashCode(this)); //$NON-NLS-1$ >>> deactivate(); >>> context.disableComponent(pid); //attempt to manually deactivate >>> itself. >>> } >>> } >>> >>> >>> Alain Picard >>> Chief Strategy Officer >>> Castor Technologies Inc >>> o:514-360-7208 >>> m:813-787-3424 >>> >>> pic...@castortech.com >>> www.castortech.com >>> _______________________________________________ >>> OSGi Developer Mail List >>> osgi-dev@mail.osgi.org >>> https://mail.osgi.org/mailman/listinfo/osgi-dev >> >> >> >> -- >> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> >> (@rotty3000) >> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com> >> (@Liferay) >> _______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev > > _______________________________________________ > OSGi Developer Mail List > osgi-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev