You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Bengt Rodehav <be...@rodehav.com> on 2011/01/10 14:59:48 UTC

iPOJO - restarting component on configuration change

I use iPOJO and configuration admin. When certain configuration properties
change, I want to "restart" my iPOJO instance. I e I want the instance to
become invalid and then valid again. Currently I do some initialisation on
the method marked as @Validate and some cleanup in the method marked
as @Invalidate.

It's very tricky to get this to work. When I start my application it seems
like both the @Validate and the @Updated methods are called which causes
problems. What is the recommended way to accomplish this?

Ideally I would like to mark my iPOJO properties as requiring the instance
to "restart", e g

*  @Property(name = "rootUrl", restart = "true")*

*  private String mRootUrl;*


/Bengt

Re: iPOJO - restarting component on configuration change

Posted by Bengt Rodehav <be...@rodehav.com>.
Brilliant - looking forward to 2.0.

/Bengt

2011/1/12 Clement Escoffier <cl...@gmail.com>

> Hi,
>
> On 12.01.11 09:35, "Bengt Rodehav" <be...@rodehav.com> wrote:
>
> >Clement,
> >
> >I managed to get this to work using the following pattern:
> >
> >*@Component(...)*
> >
> >*public class MyComponent {*
> >
> >*  private boolean mIsValid = false;*
> >
> >*
> >> *
> >
> >*  @Validate*
> >
> >*  public void starting() throws Exception {*
> >
> >*    init();*
> >
> >*    mIsValid = true;*
> >
> >*  }*
> >
> >*
> >> *
> >
> >*  @Invalidate*
> >
> >*  public void stopping() {*
> >
> >*    mIsValid = false;*
> >
> >*    terminate();*
> >
> >*  }*
> >
> >*
> >> *
> >
> >*  @Updated*
> >
> >*  public void updated() throws Exception {*
> >
> >*    // Do nothing if we are not valid yet*
> >
> >*    if (mIsValid) {*
> >
> >*      restart();*
> >
> >*    }*
> >
> >*  }*
> >
> >*
> >> *
> >
> >*  @Property(name = "myProp", mandatory = false, value = "default value")*
> >
> >*  private String mMyProp;*
> >
> >*
> >> *
> >
> >*  private String mRegisteredMyProp;*
> >
> >*
> >> *
> >
> >*  private void init() throws Exception {*
> >
> >*    // Perform my initialisation*
> >
> >*    ...*
> >
> >*    mRegisteredMyProp = mMyProp;*
> >
> >*  }*
> >
> >*
> >> *
> >
> >*  private void terminate() {*
> >
> >*    // Perform my cleanup*
> >
> >*    ...*
> >
> >*    mRegisteredMyProp = null;*
> >
> >*  }*
> >
> >*
> >> *
> >
> >*  private void restart() throws Exception {*
> >
> >*    // Has the configuration changed?*
> >
> >*    if (!mMyProp.equals(mRegisteredMyProp) {*
> >
> >*      terminate();*
> >
> >*      init();*
> >
> >*    }*
> >
> >*  }*
> >
> >*}*
> >
> >
> >Thus I didn't need a life cycle controller after all. The implementation
> >of
> > FELIX-2773 could probably do something similar.
>
>
> Yes something like that. During reconfiguration I can just set the state
> to invalid and immediately to valid.
>
> >I think that if iPOJO were
> >to support inheritance, then the need to include functionality such as
> >FELIX-2773 would be void since it would then be an easy task to put it in
> >a
> >super class. Forgive me for asking again but would is the status of
> >supporting inheritance in iPOJO?
>
> I've finally more or less designed and planned for iPOJO 2.0 (2011).
>
> Regards,
>
> Clement
>
> >
> >/Bengt
> >
> >
> >2011/1/11 Clement Escoffier <cl...@gmail.com>
> >
> >>
> >>
> >> On 11.01.11 10:16, "Bengt Rodehav" <be...@rodehav.com> wrote:
> >>
> >> >I created the following JIRA ticket:
> >> >
> >> >https://issues.apache.org/jira/browse/FELIX-2773
> >>
> >> Thanks,
> >>
> >> >
> >> ><https://issues.apache.org/jira/browse/FELIX-2773>I'll try
> >>experimenting
> >> >with the life cycle controller and see if I can use that as a
> >>workaround.
> >> >
> >> >Are you thinking something like this:
> >> >
> >> >- Create an attribute that acts as life cycle controller. Initial value
> >> >would be true.
> >> >- When I detect that a critical property (one that requires restart) is
> >> >updated, I set the life cycle controller to false. I guess I would do
> >>this
> >> >in an @Updated method.
> >> >
> >> >When do I set the life cycle controller to true again?
> >>
> >>
> >> Probably at the end of the @Updated if everything is fine.
> >>
> >> Regards,
> >>
> >> Clement
> >>
> >> >
> >> >/Bengt
> >> >
> >> >2011/1/11 Clement Escoffier <cl...@gmail.com>
> >> >
> >> >> Hi,
> >> >>
> >> >> On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:
> >> >>
> >> >> >I use iPOJO and configuration admin. When certain configuration
> >> >>properties
> >> >> >change, I want to "restart" my iPOJO instance. I e I want the
> >>instance
> >> >>to
> >> >> >become invalid and then valid again. Currently I do some
> >> >>initialisation on
> >> >> >the method marked as @Validate and some cleanup in the method marked
> >> >> >as @Invalidate.
> >> >> >
> >> >> >It's very tricky to get this to work. When I start my application it
> >> >>seems
> >> >> >like both the @Validate and the @Updated methods are called which
> >> >>causes
> >> >> >problems. What is the recommended way to accomplish this?
> >> >> >
> >> >> >Ideally I would like to mark my iPOJO properties as requiring the
> >> >>instance
> >> >> >to "restart", e g
> >> >> >
> >> >> >*  @Property(name = "rootUrl", restart = "true")*
> >> >> >
> >> >> >*  private String mRootUrl;*
> >> >>
> >> >> Unfortunately this is not supported. It can be an interesting
> >>feature to
> >> >> allow an instance to be invalidated/validated during the
> >> >>reconfiguration.
> >> >> Could you open a jira issue  ?
> >> >>
> >> >> In the meantime, you could try to use the lifecycle controller to
> >>force
> >> >> the invalidation / revalidation.
> >> >>
> >> >> Regards,
> >> >>
> >> >> Clement
> >> >>
> >> >> >
> >> >> >
> >> >> >/Bengt
> >> >>
> >> >>
> >> >>
> >> >> ---------------------------------------------------------------------
> >> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> >> >> For additional commands, e-mail: users-help@felix.apache.org
> >> >>
> >> >>
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> >> For additional commands, e-mail: users-help@felix.apache.org
> >>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>

Re: iPOJO - restarting component on configuration change

Posted by Clement Escoffier <cl...@gmail.com>.
Hi,

On 12.01.11 09:35, "Bengt Rodehav" <be...@rodehav.com> wrote:

>Clement,
>
>I managed to get this to work using the following pattern:
>
>*@Component(...)*
>
>*public class MyComponent {*
>
>*  private boolean mIsValid = false;*
>
>*
>> *
>
>*  @Validate*
>
>*  public void starting() throws Exception {*
>
>*    init();*
>
>*    mIsValid = true;*
>
>*  }*
>
>*
>> *
>
>*  @Invalidate*
>
>*  public void stopping() {*
>
>*    mIsValid = false;*
>
>*    terminate();*
>
>*  }*
>
>*
>> *
>
>*  @Updated*
>
>*  public void updated() throws Exception {*
>
>*    // Do nothing if we are not valid yet*
>
>*    if (mIsValid) {*
>
>*      restart();*
>
>*    }*
>
>*  }*
>
>*
>> *
>
>*  @Property(name = "myProp", mandatory = false, value = "default value")*
>
>*  private String mMyProp;*
>
>*
>> *
>
>*  private String mRegisteredMyProp;*
>
>*
>> *
>
>*  private void init() throws Exception {*
>
>*    // Perform my initialisation*
>
>*    ...*
>
>*    mRegisteredMyProp = mMyProp;*
>
>*  }*
>
>*
>> *
>
>*  private void terminate() {*
>
>*    // Perform my cleanup*
>
>*    ...*
>
>*    mRegisteredMyProp = null;*
>
>*  }*
>
>*
>> *
>
>*  private void restart() throws Exception {*
>
>*    // Has the configuration changed?*
>
>*    if (!mMyProp.equals(mRegisteredMyProp) {*
>
>*      terminate();*
>
>*      init();*
>
>*    }*
>
>*  }*
>
>*}*
>
>
>Thus I didn't need a life cycle controller after all. The implementation
>of
> FELIX-2773 could probably do something similar.


Yes something like that. During reconfiguration I can just set the state
to invalid and immediately to valid.

>I think that if iPOJO were
>to support inheritance, then the need to include functionality such as
>FELIX-2773 would be void since it would then be an easy task to put it in
>a
>super class. Forgive me for asking again but would is the status of
>supporting inheritance in iPOJO?

I've finally more or less designed and planned for iPOJO 2.0 (2011).

Regards,

Clement

>
>/Bengt
>
>
>2011/1/11 Clement Escoffier <cl...@gmail.com>
>
>>
>>
>> On 11.01.11 10:16, "Bengt Rodehav" <be...@rodehav.com> wrote:
>>
>> >I created the following JIRA ticket:
>> >
>> >https://issues.apache.org/jira/browse/FELIX-2773
>>
>> Thanks,
>>
>> >
>> ><https://issues.apache.org/jira/browse/FELIX-2773>I'll try
>>experimenting
>> >with the life cycle controller and see if I can use that as a
>>workaround.
>> >
>> >Are you thinking something like this:
>> >
>> >- Create an attribute that acts as life cycle controller. Initial value
>> >would be true.
>> >- When I detect that a critical property (one that requires restart) is
>> >updated, I set the life cycle controller to false. I guess I would do
>>this
>> >in an @Updated method.
>> >
>> >When do I set the life cycle controller to true again?
>>
>>
>> Probably at the end of the @Updated if everything is fine.
>>
>> Regards,
>>
>> Clement
>>
>> >
>> >/Bengt
>> >
>> >2011/1/11 Clement Escoffier <cl...@gmail.com>
>> >
>> >> Hi,
>> >>
>> >> On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:
>> >>
>> >> >I use iPOJO and configuration admin. When certain configuration
>> >>properties
>> >> >change, I want to "restart" my iPOJO instance. I e I want the
>>instance
>> >>to
>> >> >become invalid and then valid again. Currently I do some
>> >>initialisation on
>> >> >the method marked as @Validate and some cleanup in the method marked
>> >> >as @Invalidate.
>> >> >
>> >> >It's very tricky to get this to work. When I start my application it
>> >>seems
>> >> >like both the @Validate and the @Updated methods are called which
>> >>causes
>> >> >problems. What is the recommended way to accomplish this?
>> >> >
>> >> >Ideally I would like to mark my iPOJO properties as requiring the
>> >>instance
>> >> >to "restart", e g
>> >> >
>> >> >*  @Property(name = "rootUrl", restart = "true")*
>> >> >
>> >> >*  private String mRootUrl;*
>> >>
>> >> Unfortunately this is not supported. It can be an interesting
>>feature to
>> >> allow an instance to be invalidated/validated during the
>> >>reconfiguration.
>> >> Could you open a jira issue  ?
>> >>
>> >> In the meantime, you could try to use the lifecycle controller to
>>force
>> >> the invalidation / revalidation.
>> >>
>> >> Regards,
>> >>
>> >> Clement
>> >>
>> >> >
>> >> >
>> >> >/Bengt
>> >>
>> >>
>> >>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> >> For additional commands, e-mail: users-help@felix.apache.org
>> >>
>> >>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: iPOJO - restarting component on configuration change

Posted by Bengt Rodehav <be...@rodehav.com>.
Clement,

I managed to get this to work using the following pattern:

*@Component(...)*

*public class MyComponent {*

*  private boolean mIsValid = false;*

*
> *

*  @Validate*

*  public void starting() throws Exception {*

*    init();*

*    mIsValid = true;*

*  }*

*
> *

*  @Invalidate*

*  public void stopping() {*

*    mIsValid = false;*

*    terminate();*

*  }*

*
> *

*  @Updated*

*  public void updated() throws Exception {*

*    // Do nothing if we are not valid yet*

*    if (mIsValid) {*

*      restart();*

*    }*

*  }*

*
> *

*  @Property(name = "myProp", mandatory = false, value = "default value")*

*  private String mMyProp;*

*
> *

*  private String mRegisteredMyProp;*

*
> *

*  private void init() throws Exception {*

*    // Perform my initialisation*

*    ...*

*    mRegisteredMyProp = mMyProp;*

*  }*

*
> *

*  private void terminate() {*

*    // Perform my cleanup*

*    ...*

*    mRegisteredMyProp = null;*

*  }*

*
> *

*  private void restart() throws Exception {*

*    // Has the configuration changed?*

*    if (!mMyProp.equals(mRegisteredMyProp) {*

*      terminate();*

*      init();*

*    }*

*  }*

*}*


Thus I didn't need a life cycle controller after all. The implementation of
 FELIX-2773 could probably do something similar. I think that if iPOJO were
to support inheritance, then the need to include functionality such as
FELIX-2773 would be void since it would then be an easy task to put it in a
super class. Forgive me for asking again but would is the status of
supporting inheritance in iPOJO?

/Bengt


2011/1/11 Clement Escoffier <cl...@gmail.com>

>
>
> On 11.01.11 10:16, "Bengt Rodehav" <be...@rodehav.com> wrote:
>
> >I created the following JIRA ticket:
> >
> >https://issues.apache.org/jira/browse/FELIX-2773
>
> Thanks,
>
> >
> ><https://issues.apache.org/jira/browse/FELIX-2773>I'll try experimenting
> >with the life cycle controller and see if I can use that as a workaround.
> >
> >Are you thinking something like this:
> >
> >- Create an attribute that acts as life cycle controller. Initial value
> >would be true.
> >- When I detect that a critical property (one that requires restart) is
> >updated, I set the life cycle controller to false. I guess I would do this
> >in an @Updated method.
> >
> >When do I set the life cycle controller to true again?
>
>
> Probably at the end of the @Updated if everything is fine.
>
> Regards,
>
> Clement
>
> >
> >/Bengt
> >
> >2011/1/11 Clement Escoffier <cl...@gmail.com>
> >
> >> Hi,
> >>
> >> On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:
> >>
> >> >I use iPOJO and configuration admin. When certain configuration
> >>properties
> >> >change, I want to "restart" my iPOJO instance. I e I want the instance
> >>to
> >> >become invalid and then valid again. Currently I do some
> >>initialisation on
> >> >the method marked as @Validate and some cleanup in the method marked
> >> >as @Invalidate.
> >> >
> >> >It's very tricky to get this to work. When I start my application it
> >>seems
> >> >like both the @Validate and the @Updated methods are called which
> >>causes
> >> >problems. What is the recommended way to accomplish this?
> >> >
> >> >Ideally I would like to mark my iPOJO properties as requiring the
> >>instance
> >> >to "restart", e g
> >> >
> >> >*  @Property(name = "rootUrl", restart = "true")*
> >> >
> >> >*  private String mRootUrl;*
> >>
> >> Unfortunately this is not supported. It can be an interesting feature to
> >> allow an instance to be invalidated/validated during the
> >>reconfiguration.
> >> Could you open a jira issue  ?
> >>
> >> In the meantime, you could try to use the lifecycle controller to force
> >> the invalidation / revalidation.
> >>
> >> Regards,
> >>
> >> Clement
> >>
> >> >
> >> >
> >> >/Bengt
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> >> For additional commands, e-mail: users-help@felix.apache.org
> >>
> >>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>

Re: iPOJO - restarting component on configuration change

Posted by Clement Escoffier <cl...@gmail.com>.

On 11.01.11 10:16, "Bengt Rodehav" <be...@rodehav.com> wrote:

>I created the following JIRA ticket:
>
>https://issues.apache.org/jira/browse/FELIX-2773

Thanks,

>
><https://issues.apache.org/jira/browse/FELIX-2773>I'll try experimenting
>with the life cycle controller and see if I can use that as a workaround.
>
>Are you thinking something like this:
>
>- Create an attribute that acts as life cycle controller. Initial value
>would be true.
>- When I detect that a critical property (one that requires restart) is
>updated, I set the life cycle controller to false. I guess I would do this
>in an @Updated method.
>
>When do I set the life cycle controller to true again?


Probably at the end of the @Updated if everything is fine.

Regards,

Clement

>
>/Bengt
>
>2011/1/11 Clement Escoffier <cl...@gmail.com>
>
>> Hi,
>>
>> On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:
>>
>> >I use iPOJO and configuration admin. When certain configuration
>>properties
>> >change, I want to "restart" my iPOJO instance. I e I want the instance
>>to
>> >become invalid and then valid again. Currently I do some
>>initialisation on
>> >the method marked as @Validate and some cleanup in the method marked
>> >as @Invalidate.
>> >
>> >It's very tricky to get this to work. When I start my application it
>>seems
>> >like both the @Validate and the @Updated methods are called which
>>causes
>> >problems. What is the recommended way to accomplish this?
>> >
>> >Ideally I would like to mark my iPOJO properties as requiring the
>>instance
>> >to "restart", e g
>> >
>> >*  @Property(name = "rootUrl", restart = "true")*
>> >
>> >*  private String mRootUrl;*
>>
>> Unfortunately this is not supported. It can be an interesting feature to
>> allow an instance to be invalidated/validated during the
>>reconfiguration.
>> Could you open a jira issue  ?
>>
>> In the meantime, you could try to use the lifecycle controller to force
>> the invalidation / revalidation.
>>
>> Regards,
>>
>> Clement
>>
>> >
>> >
>> >/Bengt
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Re: iPOJO - restarting component on configuration change

Posted by Bengt Rodehav <be...@rodehav.com>.
I created the following JIRA ticket:

https://issues.apache.org/jira/browse/FELIX-2773

<https://issues.apache.org/jira/browse/FELIX-2773>I'll try experimenting
with the life cycle controller and see if I can use that as a workaround.

Are you thinking something like this:

- Create an attribute that acts as life cycle controller. Initial value
would be true.
- When I detect that a critical property (one that requires restart) is
updated, I set the life cycle controller to false. I guess I would do this
in an @Updated method.

When do I set the life cycle controller to true again?

/Bengt

2011/1/11 Clement Escoffier <cl...@gmail.com>

> Hi,
>
> On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:
>
> >I use iPOJO and configuration admin. When certain configuration properties
> >change, I want to "restart" my iPOJO instance. I e I want the instance to
> >become invalid and then valid again. Currently I do some initialisation on
> >the method marked as @Validate and some cleanup in the method marked
> >as @Invalidate.
> >
> >It's very tricky to get this to work. When I start my application it seems
> >like both the @Validate and the @Updated methods are called which causes
> >problems. What is the recommended way to accomplish this?
> >
> >Ideally I would like to mark my iPOJO properties as requiring the instance
> >to "restart", e g
> >
> >*  @Property(name = "rootUrl", restart = "true")*
> >
> >*  private String mRootUrl;*
>
> Unfortunately this is not supported. It can be an interesting feature to
> allow an instance to be invalidated/validated during the reconfiguration.
> Could you open a jira issue  ?
>
> In the meantime, you could try to use the lifecycle controller to force
> the invalidation / revalidation.
>
> Regards,
>
> Clement
>
> >
> >
> >/Bengt
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>

Re: iPOJO - restarting component on configuration change

Posted by Clement Escoffier <cl...@gmail.com>.
Hi,

On 10.01.11 14:59, "Bengt Rodehav" <be...@rodehav.com> wrote:

>I use iPOJO and configuration admin. When certain configuration properties
>change, I want to "restart" my iPOJO instance. I e I want the instance to
>become invalid and then valid again. Currently I do some initialisation on
>the method marked as @Validate and some cleanup in the method marked
>as @Invalidate.
>
>It's very tricky to get this to work. When I start my application it seems
>like both the @Validate and the @Updated methods are called which causes
>problems. What is the recommended way to accomplish this?
>
>Ideally I would like to mark my iPOJO properties as requiring the instance
>to "restart", e g
>
>*  @Property(name = "rootUrl", restart = "true")*
>
>*  private String mRootUrl;*

Unfortunately this is not supported. It can be an interesting feature to
allow an instance to be invalidated/validated during the reconfiguration.
Could you open a jira issue  ?

In the meantime, you could try to use the lifecycle controller to force
the invalidation / revalidation.

Regards,

Clement

>
>
>/Bengt



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org