Thanks Clement, /Bengt
2010/11/12 Clement Escoffier <[email protected]> > Hi, > > > On 12.11.10 16:27, "Bengt Rodehav" <[email protected]> wrote: > > >Clement, > > > >Now I've tested trunk again and I can't seem to get it to work. When the > >exception is thrown in the start() method, the instance disappears from > >the > >iPOJO tab in Webconsole. I assume it is because it is STOPPED. > > > >When I change my configuration (so that it's correct) I'm hoping the > >instance will start again but nothing happens. > > > >Does your test case involve the configuration admin? Remember that my > >controller property is connected to the configuration admin. This makes it > >possible for me to enable/disable my service with a configuration > >property. > >Could this lead to timing issues? Will the instance receive configuration > >changes while it is stopped? > > It is directly using the 'reconfigure' method... So you're right. I should > try with the config admin. I will look into that this weekend, and keep > you posted. > > Clement > > > > >BTW the Svn revision of iPOJO that I've tested is 1033833. > > > >/Bengt > > > >2010/11/12 Bengt Rodehav <[email protected]> > > > >> Clement, > >> > >> I've tested the workaround again to get a feel for what is happening. > >> > >> I use the same code I wrote in my previous post. When forcing an > >>exception > >> in the start() method, the following situation occurs: When looking at > >>the > >> iPOJO instance via the Webconsole, it is still marked as valid but the > >> architecture says the valid property is false. > >> > >> Looking at the configuration tab in the Webconsole, it seems the valid > >> property (according to configuration admin) is still true. It seems > >>like I > >> cannot change the valid property (mValid field) directly like I do. Do I > >> have to use configuration admin? > >> > >> /Bengt > >> > >> 2010/11/12 Clement Escoffier <[email protected]> > >> > >> 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] > >>> > >>> > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >

