felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Gardfjäll <peter.gardfjall.w...@gmail.com>
Subject Re: Best practice on propagating configuration errors from ManagedFactoryService to client?
Date Tue, 31 Jan 2012 10:26:37 GMT
Thanks Felix,

yes your approach (with the facade service) is pretty much the route I've
chosen to take.
Just wanted to make sure I hadn't misunderstood how to use the
ManagedFactoryService or was failing to see a simple solution.

best regards, Peter

On Tue, Jan 31, 2012 at 9:49 AM, Felix Meschberger <fmeschbe@adobe.com>wrote:

> Hi,
>
> Am 31.01.2012 um 09:40 schrieb Peter Gardfjäll:
>
> > To my question:
> >
> > I have a ManagedFactoryService that creates service instances and I have
> > another (client) bundle that creates instances by registering new
> > configurations with the factory.
> > What I currently find difficult is to propagate errors (such as a
> required
> > configuration property missing) from the ManagedFactoryService to the
> > client.
> >
> > When the client uses an invalid configuration dictionary to instantiate a
> > new service instance as follows
> >
> >        // instantiate new service with serviceConfig as instantiation
> > parameters
> >        Configuration config =
> > configurationAdmin.createFactoryConfiguration(factoryPid, null);
> >        config.update(serviceConfig);
> >
> > no exception is raised despite the ManagedFactoryService throwing a
> > ConfigurationException.
> > I guess this is expected since configuration updates are handled on a
> > separate thread of execution.
> > But this is problematic since, from the client bundle's perspective, the
> > configuration update appears to have been successful.
> >
> > So what I really need to know is if there is a best practice for
> > propagating the configuration error from the ManagedFactoryService to the
> > client?
> > Any suggestions would be appreciated.
>
> Yes, this might be perceived as a problem. But this is how decoupling
> works.
>
> If you want to have tight coupling between the configuration producer
> (client you say) and the service producer (ManagedServiceFactory in your
> case) then you have to do close coupling: Create a factory which is fed by
> the client with configuration, checks this configuration and then does the
> rest.
>
> For example: Provide a service where clients can send configuration. Ther
> service checks the configuration and fails if the configuration is bad.
> Otherwise the service creates the FactoryConfiguration on behalf of the
> client and thus causes the ManagedServiceFactory to be put in action.
>
> One way of doing this might be leveraging Declarative Services
> ComponentFactory components. These expose a ComponentFactory service with a
> newInstance method taking a Dictionary object. If the creation instances
> fails due to wrong configuration you get direct feedback by getting an
> Exception.
>
> Hope this helps.
>
> Regards
> Felix
> >
> > best regards, Peter
> >
> >
> > [1] -
> >
> http://karaf.922171.n3.nabble.com/Best-practice-on-propagating-configuration-errors-from-ManagedFactoryService-to-client-tp3699427p3699427.html
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message