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

Reply via email to