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:[email protected]] Envoyé : mercredi 13 octobre 2010 20:33 À : [email protected] 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: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]

