Hi,
On 11.11.10 09:51, "Bengt Rodehav" <[email protected]> wrote: >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. Hum, that's not normal. Check that another exception is not thrown (the log should contain it). > >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... Yes, I've implemented a test case, and the instance is restarted. > >I use the following annotations on my class: > >@Component(name = "myName", propagation = true, immediate = true) >@Provides(specifications = myInterface.class, strategy = "SERVICE") I will test with this configuration. > >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. A stopped instance is really stopped. The Architecture service is no more exposed as no data can be collected (all handlers will say : STOPPED). > >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). I've received a similar request, and I'm looking for the best way to implement this. Right now, the log contain the error. Clement > >/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] >>> >>> >> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

