On 8/17/11 13:14, Donald Whytock wrote:
Unable to reproduce the problem today. Maybe all that time I was just
short by a refresh.
Thanks anyway for the help...
No problem...I thought it sounded too odd to be that simple... :-)
-> richard
Don
On Wed, Aug 17, 2011 at 11:41 AM, Donald Whytock<[email protected]> wrote:
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]