>> When BundleB is started, ActivatorA.start() instantiates and starts an >> extension of ServiceTracker, myServiceTracker. >> myServiceTracker.addingReference() calls getServiceImpl() for a >> ServiceImpA and calls showStatus() on it. >> >> If ServiceImplB.showStatus() calls super.showStatus(), >> ServiceImplB.showStatus() is called. If ServiceImplB.showStatus() >> does not call super.showStatus(), ServiceImplA.showStatus() is called. > > Are you saying that invoking ServiceImplB.showStatus() bypasses the code in > ServiceImplB.showStatus() and directly goes to ServiceImplA.showStatus()?
Yes. Code in the ServiceTracker launched by ActivatorA does serviceImpl = getServiceImpl(); getServiceImpl() is abstract, and implemented by ActivatorB to return a ServiceImplB. If serviceImpl.showStatus() is called, ServiceImplA.showStatus() is run, unless ServiceImplB.showStatus() calls super.showStatus(). > >> >> I don't believe this is normal Java behavior. I believe in a >> command-line-JVM situation, ServiceImplB.showStatus() would always be >> called, whether or not it called super.showStatus(). So is this an >> idiosyncracy of classloaders in Felix? > > I doubt it. I would imagine something else is going on. If you want to email > me a simple working example, I can take a look at it. Not sure I have an example I'd call simple, but I'll see what I can do. :) Thanks... Don --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

