Thank for the feedback Angelo. I'm developing an application has config data managed externally. The config data represents components and their dependencies. The components are OSGI services and there are multiple service instances (so that sets of components have their own instances).
I have started with using DS and ComponentFactories. The config is turned into properties and then new components are created using componentfactory.newInstance(properties). I was looking into the ConfigurationAdmin api and trying to understand if/how I could use it to make this easier and write less code. That is when I discovered the ManagedServiceFactory. My understanding is that a ComponentFactory and a ManagedServiceFactory can both be used to return multiple instances of a service. The instances returned by the ManagedServiceFactory are associated with a specific configuration instance and can be managed by ConfigurationAdmin. If I understand this correctly, I should be able to create/update service instances via ConfigurationAdmin by getting/creating the Configuration for a specific service instance and calling the update method with the properties. This seems like less code and would be generic for any service type. I'm uncertain if/how I can define the service and it's dependencies via DS which is very attractive. I'm uncertain how a ComponentFactory and their instances work with ConfigurationAdmin and if the scenario above is possible. This is all new to me so I'm sure I'm missing things. Any advice on how to approach this is appreciated. Thanks, T On Thu, May 20, 2010 at 4:44 PM, Angelo van der Sijpt <[email protected]> wrote: > It depends on what you need, and the mechanism you use for dependency > management. In short, > - ManagedServiceFactory is a part of the Configuration Admin specification > from the Compendium (section 104). It allows you to create zero or more > services based on a configuration, in much the same way as you would > configure exactly one service using a ManagedService. > - ComponentFactory is a part of the Declarative Services specification > (Compendium, 112), and is used for creating instances of a service on-demand > (see 112.2.4). > > If you need to generate services 'externally', for instance, you have a > service that discloses information based on some file system paths, you can > use a ManagedServiceFactory: you create a configuration for each of the paths. > If you need to be able to create a service for each 'getting' of the service > (so they don't get shared between components using the service), and you > happen to use SCR as a dependency management mechanism, you can go with > ComponentFactory. > > So, they are not necessarily comparable. What is your use case? > > Angelo > > On May 20, 2010, at 8:26 PM, Tom Kesling wrote: > >> Hello, >> I'm trying to understand when to use a ManagedServiceFactory vs a >> ComponentFactory. >> >> Any advice is appreciated. >> >> Thanks, >> T >> _______________________________________________ >> OSGi Developer Mail List >> [email protected] >> https://mail.osgi.org/mailman/listinfo/osgi-dev > > > _______________________________________________ > OSGi Developer Mail List > [email protected] > https://mail.osgi.org/mailman/listinfo/osgi-dev > _______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
