Hi,
On 27.08.2009, at 13:27, [email protected] wrote:
Hello Clement,
thanks for your answer. I tried to add an unbind method but my log
show
me this method is never called (even if I set an id to the require and
the unbind). I've the impression it's because the unregistering of the
two services are done almost in the same time. What do you think about
this ?
Potentially, your already stopped when the service goes away. In that
case, unbind is not call (but invalidate is called).
Anyway I decided to set again my require to optional=true as it was
before because potentially I can validate my object without my
registry.
So, with optional, in the invalidate, you will potentially receive a
nullable object (so a mock object doing nothing).
Regards,
Clement
Thanks for your help.
Clement Escoffier wrote:
Hi,
On 25.08.2009, at 11:25, [email protected] wrote:
Hello again,
I must add my two iPojo services have the same start level because
they're coming from the same bundle. I don't know if it can be
usefull
to understand my problem...
++
[email protected] wrote:
Hello,
I've two iPojo services object and objectRegistry. The service
object
requires objectRegistry and the services objectRegistry doesn't
require
any services.
When starting (iPojo @Validate) my object service it
automatically bind
itself in the objectRegistry service.
When stopping (iPojo @Invalidate) my object service it
automatically
unbind itself from the objectRegistry service.
Sometimes I get this warning when shutting down my Felix:
[WARNING] object : [object.42679d9e-eee8-4810-bcd4-a21b5cbc91a1]
The
dependency is not optional, however no service objectRegistry can
be
injected in obr -> objectRegistry
After this warning I get a null pointer exception - no more as I
verify
now if obr is null or not before any call on it - on my object
invalidate stop method because object try to unbind itself from my
objectRegistry services.
As I can not reproduce the problem every time I've the impression
Felix
is shutting down its services in a disorder way ... Some times
it's ok
some times not...
I would like to understand why the service objectRegistry has been
shutdown before the service object as object requires
objectRegistry ?
Should Felix not manage the requires tree at shutdown as it
managed it
at start ? Do I miss something ? Is this a known bug ? Is there a
solution for this problem ?
Thanks for all.
It not a bug, it a normal behavior. Let me explain why:
during the shutdown, Felix stops all the bundles, and so services
leaves.
When a required (not optional) service leaves, it invalidates the
instance. If this instance has an 'invalidate' callback, this
callback
is called. The callback is called after its unregistration, that's
why
the service is no more available. So, invalidate callbacks must be
developed defensively to check service availability:
public void stop() {
if (myservice != null) {
// you can use myservice
}
}
If you really need to do something on this service before it leaves,
you can add an unbind callback on the dependency. This callback is
called during the unregistration, and so you have access to the
service.
Regards,
Clement
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]