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]

Reply via email to