Clement,
Unfortunately it's still not working for me. I firs tried the workaround
which basically goes as follows:
@Controller
@Property(name = "enable", mandatory = true)
private boolean mValid;
.
.
.
try {
// start the route
} catch (Exception e) {
mValid = false;
}
If an exception is thrown, then the instance is made invalid. However, I
cannot get it valid again even if I fix the underlying configuration
problems and enable it again.
I get the same result when using the trunk version of iPOJO.
Have you tested that it's possible to validate a stopped instance this way?
I'm not sure if I'm doing anything wrong here...
I use the following annotations on my class:
@Component(name = "myName", propagation = true, immediate = true)
@Provides(specifications = myInterface.class, strategy = "SERVICE")
I usually use the Felix Webconsole with the iPOJO plugin to inspect my iPOJO
instances. Currently when instances are stopped, they are not shown in the
Webconsole at all while if they are invalidated they are shown with the
state "invalid" and also information about why the instance is not valid.
It would be very useful if even stopped instances were shown in the
Webconsole and perhaps with some information about why the instance is
stopped (e g the exception thrown during initialization).
/Bengt
2010/11/11 Bengt Rodehav <[email protected]>
> Wow, your're fast...
>
> I'll try both the workaround and the fix since I'll probably need to use
> the workaround until the next iPOJO release.
>
> /Bengt
>
> 2010/11/10 Clement Escoffier <[email protected]>
>
>>
>>
>> On 10.11.10 20:45, "Bengt Rodehav" <[email protected]> wrote:
>>
>> >Thanks a lot Clement. I'll try your workaround while wating for a fix on
>> >trunk.
>>
>> Already Fixed in trunk :-)
>>
>> Clement
>>
>> >
>> >/Bengt
>> >
>> >2010/11/10 Clement Escoffier <[email protected]>
>> >
>> >> Hi,
>> >>
>> >> So, I've checked. So, what I explained works correctly. So if the
>> >>instance
>> >> is INVALID and we reconfigure the instance, the instance state is
>> >> recomputed. However... In your case you're not INVALID but STOPPED.
>> >> Indeed, when the constructor or a @Validate callback throw an
>> exception,
>> >> the instance is shutdown.
>> >>
>> >> Unfortunately, when a stopped instance is reconfigured, the state is
>> not
>> >> recomputed. That's definitely a bug (and a pretty nice catch !). The
>> >> instance should be restarted with the new configuration. This issue
>> will
>> >> be fixed pretty soon in the trunk.
>> >>
>> >> What you can do for now is to use a lifecycle controller (@Controller),
>> >> catch the Exception and set the controller to false. Then the instance
>> >>is
>> >> invalid not stopped.
>> >>
>> >> Regards,
>> >>
>> >> Clement
>> >>
>> >>
>> >> On 10.11.10 18:00, "Bengt Rodehav" <[email protected]> wrote:
>> >>
>> >> >Thanks Clement.
>> >> >
>> >> >I forgot to write that I use iPOJO 1.6.6.
>> >> >
>> >> >/Bengt
>> >> >
>> >> >2010/11/10 Clement Escoffier <[email protected]>
>> >> >
>> >> >> Hi,
>> >> >>
>> >> >>
>> >> >> On 10.11.10 17:04, "Bengt Rodehav" <[email protected]> wrote:
>> >> >>
>> >> >> >I create iPOJO instances from factory configurations using
>> >> >>Configuration
>> >> >> >Admin and File Install. When the iPOJO instance becomes valid I do
>> >>my
>> >> >> >initialisation (which normally starts a Camel route) and when the
>> >>iPOJO
>> >> >> >instance becomes invalid I terminate my processing (which means
>> >>that I
>> >> >> >normally stop a Camel route).
>> >> >> >
>> >> >> > @Validate
>> >> >> > public void start() {
>> >> >> > // Start the route
>> >> >> > }
>> >> >> >
>> >> >> > @Invalidate
>> >> >> > public void stop() {
>> >> >> > // Stop the route
>> >> >> > }
>> >> >> >
>> >> >> >To make it possible to control my iPOJO instances I use a
>> controller
>> >> >> >property as follows:
>> >> >> >
>> >> >> > @Controller
>> >> >> > @Property(name = "enable", mandatory = true)
>> >> >> > private boolean mValid;
>> >> >> >
>> >> >> >This allows me to enable/disable my service via configuration.
>> >> >>However, I
>> >> >> >have noticed that if an exception is thrown in the start() method
>> >> >>above,
>> >> >> >then the iPOJO becomes invalid and there is no way for me to make
>> it
>> >> >>valid
>> >> >> >by changing any configuration property. It seems like I have to
>> >>delete
>> >> >>the
>> >> >> >configuration and create a new one. Have I understood this
>> >>correctly?
>> >> >>
>> >> >> Modifying the configuration should trigger a reconfiguration of the
>> >> >> instance. It should then recompute the state (in theory it should
>> >>work).
>> >> >> Deleting the configuration disposes the instance and recreates a new
>> >> >>one.
>> >> >>
>> >> >> >
>> >> >> >I would like a convenient way to either make my iPOJO instance
>> valid
>> >> >>again
>> >> >> >or a way to dispose of the old instance and create a new one. How
>> >>can I
>> >> >> >accomplish this? It would be convenient if I could flag my iPOJO
>> >>class
>> >> >> >with
>> >> >> >an annotation like "deleteOnException" or something like that.
>> >> >>
>> >> >> Modifying the configuration should do the work. I will check that.
>> >> >>
>> >> >> Regards,
>> >> >>
>> >> >> Clement
>> >> >>
>> >> >> >
>> >> >> >/Bengt
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> ---------------------------------------------------------------------
>> >> >> 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]
>>
>>
>