You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Bigard Olivier <ob...@axway.com> on 2010/10/13 17:06:06 UTC

Exception handling in iPojo annotations

Hi,

 

When using iPojo 1.6.4 with annotations, the method you implement can
throw Java exceptions like following:

 

                @Validate

      public void validate() throws Exception

      {

        throw new Exception("My Exception");

      }

 

When executing this method, iPojo will first catch the Exception in the
"stateChanged(int)" method of the "LifecycleCallbackHandler" class.

This method will log an error and throw a new Exception that will
finally be caught by the "setState(int)" method of the "InstanceManager"
class.

This method will stop the current iPojo instance.

 

This mechanism is perfect, but is it possible to customize iPojo to be
able to do more in this use-case?

For example in our case: sending an Alert to someone indicating that the
start sequence of this Bundle failed...

This could be achieved by iPojo by sending a specific OSGi Event
indicating the cause of the error.

 

What do you think about this?

 

Thanks

Olivier


Re: Exception handling in iPojo annotations

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

On 25.10.2010, at 14:57, Bigard Olivier wrote:

> Hi Clement,
> 
> The error-detector that you recommend to create is not able to know why some instances are not valid.
> Using the LogListener OSGi service, it seems to be possible to get that information.
> But it's necessary to filter out all the not interesting log records.
> 
> In my opinion, it could be more efficient to add in an optional error-handler the internals of iPojo that can be used to track invalid instances.
> This error-handler could generate a dedicated kind of OSGi Event that could be handled by the application.
> What do you think about this proposal?

Sorry to not have answered before, I'm still looking for the best solution. This error handler makes a lot of sense, but the question is where to plug this handler. Using a 'plain' iPOJO handler won't work because handlers may not communicate their errors. One solution would be to plug this handler on the iPOJO internal logger. 

I keep you posted when I found a consistent solution.

Regards,

Clement

> 
> Thanks,
> Olivier
> 
> 
> -----Message d'origine-----
> De : Clement Escoffier [mailto:clement.escoffier@gmail.com] 
> Envoyé : mercredi 13 octobre 2010 20:33
> À : users@felix.apache.org
> Objet : Re: Exception handling in iPojo annotations
> 
> Hello,
> 
> On 13.10.2010, at 17:06, Bigard Olivier wrote:
> 
>> Hi,
>> 
>> 
>> 
>> When using iPojo 1.6.4 with annotations, the method you implement can
>> throw Java exceptions like following:
>> 
>> 
>> 
>>               @Validate
>> 
>>     public void validate() throws Exception
>> 
>>     {
>> 
>>       throw new Exception("My Exception");
>> 
>>     }
>> 
>> a kind of error 
>> 
>> When executing this method, iPojo will first catch the Exception in the
>> "stateChanged(int)" method of the "LifecycleCallbackHandler" class.
>> 
>> This method will log an error and throw a new Exception that will
>> finally be caught by the "setState(int)" method of the "InstanceManager"
>> class.
>> 
>> This method will stop the current iPojo instance.
>> 
>> 
>> 
>> This mechanism is perfect, but is it possible to customize iPojo to be
>> able to do more in this use-case?
>> 
>> For example in our case: sending an Alert to someone indicating that the
>> start sequence of this Bundle failed...
>> 
>> This could be achieved by iPojo by sending a specific OSGi Event
>> indicating the cause of the error.
>> 
>> What do you think about this?
> 
> What I do, and what I recommend, is to create a kind of error-detector. It's a component (or a plain osgi bundle) which check the configuration of the platform.
> For example, it checks that all instances are valid, all expected instance are created, services exposed... You can rely on the Architecture service to know these informations. When a error is detected,
> the detector can do whatever you want (Event, Mail, Jabber, Twitter ...).
> 
> An other way is to rely on the Log Service. The error you described, logs a message in the OSGi Log Service is available.  So you can detect issues by listening the log (using a LogServiceListener). 
> 
> Regards,
> 
> Clement
> 
>> 
>> 
>> 
>> Thanks
>> 
>> Olivier
>> 
> 
> 
> ---------------------------------------------------------------------
> 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: Exception handling in iPojo annotations

Posted by Bigard Olivier <ob...@axway.com>.
Hi Clement,

The error-detector that you recommend to create is not able to know why some instances are not valid.
Using the LogListener OSGi service, it seems to be possible to get that information.
But it's necessary to filter out all the not interesting log records.

In my opinion, it could be more efficient to add in an optional error-handler the internals of iPojo that can be used to track invalid instances.
This error-handler could generate a dedicated kind of OSGi Event that could be handled by the application.
What do you think about this proposal?

Thanks,
Olivier


-----Message d'origine-----
De : Clement Escoffier [mailto:clement.escoffier@gmail.com] 
Envoyé : mercredi 13 octobre 2010 20:33
À : users@felix.apache.org
Objet : Re: Exception handling in iPojo annotations

Hello,

On 13.10.2010, at 17:06, Bigard Olivier wrote:

> Hi,
> 
> 
> 
> When using iPojo 1.6.4 with annotations, the method you implement can
> throw Java exceptions like following:
> 
> 
> 
>                @Validate
> 
>      public void validate() throws Exception
> 
>      {
> 
>        throw new Exception("My Exception");
> 
>      }
> 
> a kind of error 
> 
> When executing this method, iPojo will first catch the Exception in the
> "stateChanged(int)" method of the "LifecycleCallbackHandler" class.
> 
> This method will log an error and throw a new Exception that will
> finally be caught by the "setState(int)" method of the "InstanceManager"
> class.
> 
> This method will stop the current iPojo instance.
> 
> 
> 
> This mechanism is perfect, but is it possible to customize iPojo to be
> able to do more in this use-case?
> 
> For example in our case: sending an Alert to someone indicating that the
> start sequence of this Bundle failed...
> 
> This could be achieved by iPojo by sending a specific OSGi Event
> indicating the cause of the error.
> 
> What do you think about this?

What I do, and what I recommend, is to create a kind of error-detector. It's a component (or a plain osgi bundle) which check the configuration of the platform.
For example, it checks that all instances are valid, all expected instance are created, services exposed... You can rely on the Architecture service to know these informations. When a error is detected,
the detector can do whatever you want (Event, Mail, Jabber, Twitter ...).

An other way is to rely on the Log Service. The error you described, logs a message in the OSGi Log Service is available.  So you can detect issues by listening the log (using a LogServiceListener). 

Regards,

Clement

> 
> 
> 
> Thanks
> 
> Olivier
> 


---------------------------------------------------------------------
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: Exception handling in iPojo annotations

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

On 13.10.2010, at 17:06, Bigard Olivier wrote:

> Hi,
> 
> 
> 
> When using iPojo 1.6.4 with annotations, the method you implement can
> throw Java exceptions like following:
> 
> 
> 
>                @Validate
> 
>      public void validate() throws Exception
> 
>      {
> 
>        throw new Exception("My Exception");
> 
>      }
> 
> a kind of error 
> 
> When executing this method, iPojo will first catch the Exception in the
> "stateChanged(int)" method of the "LifecycleCallbackHandler" class.
> 
> This method will log an error and throw a new Exception that will
> finally be caught by the "setState(int)" method of the "InstanceManager"
> class.
> 
> This method will stop the current iPojo instance.
> 
> 
> 
> This mechanism is perfect, but is it possible to customize iPojo to be
> able to do more in this use-case?
> 
> For example in our case: sending an Alert to someone indicating that the
> start sequence of this Bundle failed...
> 
> This could be achieved by iPojo by sending a specific OSGi Event
> indicating the cause of the error.
> 
> What do you think about this?

What I do, and what I recommend, is to create a kind of error-detector. It's a component (or a plain osgi bundle) which check the configuration of the platform.
For example, it checks that all instances are valid, all expected instance are created, services exposed... You can rely on the Architecture service to know these informations. When a error is detected,
the detector can do whatever you want (Event, Mail, Jabber, Twitter ...).

An other way is to rely on the Log Service. The error you described, logs a message in the OSGi Log Service is available.  So you can detect issues by listening the log (using a LogServiceListener). 

Regards,

Clement

> 
> 
> 
> Thanks
> 
> Olivier
> 


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