>> 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]

Reply via email to