On 12/set/2013, at 08:35, Felix Meschberger wrote:

> Hi
> 
> Am 11.09.2013 um 15:36 schrieb Tommaso Teofili:
> 
>> Thanks a lot Chetan, that helps a lot!
>> 
>> In the mentioned link it seems both ConfigurationFactory and 
>> ManagedServiceFactory could be used for that purpose, do you know if there 
>> is any difference / advantage / disadvantage of using one instead of the 
>> other? 
> 
> I think you are mixing concepts ;-)
> 
> The "configurationFactory" attribute to the @Component annotation is 
> information to the Apache Felix SCR plugin on how to generate the Metatype 
> descriptor (to use the component name as the factoryPID instead of the 
> service PID) -- as such this has nothing to do with the core problem but is 
> used to be able to describe configuration for tools such as the Web Console.
> 
> The mechanism actually used is so-called factory configuration. This is 
> achieved in conjunction with the OSGi Installer when your configuration nodes 
> have specific names of the form <factoryPid>-<alias>, e.g. 
> "com.adobe.granite.monitoring.impl.ScriptConfigImpl-cpu".
> 
> This creates factory configurations and Declarative services will create an 
> instance for each configuration instance.

thanks Felix for clarifying, I'll let you know how it goes.

Regards,
Tommaso

> 
> Regards
> Felix
> 
>> 
>> Regards,
>> Tommaso
>> 
>> On 11/set/2013, at 11:53, Chetan Mehrotra wrote:
>> 
>>> You can use Component based on ConfigurationFactory. Have a look at
>>> [1] for one such example
>>> 
>>> [1] http://stackoverflow.com/a/15872131/1035417
>>> Chetan Mehrotra
>>> 
>>> 
>>> On Wed, Sep 11, 2013 at 3:05 PM, Tommaso Teofili <teof...@adobe.com> wrote:
>>>> Hi all,
>>>> 
>>>> that's probably a trivial question but I'm looking for the best practice 
>>>> to create and register OSGi Services from configurations.
>>>> Here's an example scenario:
>>>> - I have an interface FooBar
>>>> - I have an implementation DefaultFooBarImpl
>>>> - I want to be able to specify a node like:
>>>> {
>>>>  "jcr:primaryType" : "sling:OsgiConfig",
>>>>  "name" : "foo"
>>>>  "property-one" : "some-value",
>>>>  "property-two" : "another-value",
>>>> }
>>>> - and consequently I'd like a new instance of DefaultFooBarImpl to be 
>>>> created and registered as a Service (of course implementing FooBar)
>>>> - then if a new configuration node is added:
>>>> {
>>>>  "jcr:primaryType" : "sling:OsgiConfig",
>>>>  "name" : "bar"
>>>>  "property-one" : "some-other-value",
>>>>  "property-two" : "yet-another-value",
>>>> }
>>>> - another instance of DefaultFooBarImpl is created and registered as a 
>>>> Service.
>>>> 
>>>> From my basic understanding (which may be obviously completely wrong) it 
>>>> seems to me that the best fit for my use case would be using 
>>>> ManagedServices [1] but I'm not too sure I should do that to handle 
>>>> multiple instances.
>>>> 
>>>> Thanks in advance and have a nice day,
>>>> Tommaso
>>>> 
>>>> [1] : 
>>>> http://www.osgi.org/javadoc/r4v42/org/osgi/service/cm/ManagedService.html
>>>> 
>>>> 
>> 
> 

Reply via email to