Hi Scott,

to point 2)
about 2-3 years ago I had a similar problem. The 'solution' was to create a 
configuration file (with the properties) in the 
'felix.fileinstall.dir'-Directory. If it is a Factory the filename should be 
<componentname>-<uniqueId>.cfg
After some time (depending on configuration) FileInstall will scan the file, 
create the configuration and the service will be instantiated.

ps. I have just checked, the 'hack' still exists and is live

Michael

Am 13.12.2017 um 22:24 schrieb Leschke, Scott via osgi-dev 
<osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>>:

Hey Tim,

Thanks for this. Yes that worked. I recall seeing something about this a number 
of months ago but didn’t pay much attention since it didn’t apply to me at the 
time. Not sure why I didn’t think to give that a try though.

Two additional questions for anybody who cares to answer.

1)      If “?” isn’t used, what would the location argument look like?  Is it 
like a bundle symbolic id, with wildcards perhaps? It’s unclear to me how this 
would be used even if you wanted to.
2)      Now for a Karaf question to any/all takers. When a service instance is 
created this way, is there a way to associate a .cfg file with it so that the 
service configuration will persist across Karaf upgrades?  I know that if a 
Configuration record is updated, the service’s corresponding .cfg file is 
updated, but if you create a new service, you don’t get a .cfg file.

Scott

From: Tim Ward [mailto:tim.w...@paremus.com]
Sent: Saturday, December 09, 2017 3:04 AM
To: Leschke, Scott; OSGi Developer Mail List
Subject: Re: [osgi-dev] Create instance of factory configuration at runtime

Hi Scott,

That does work, but Configuration Admin has an old feature called location 
binding. This feature prevents a configuration being delivered to bundles other 
than the bundle with the specified bundle location.

The one-arg version of createFactoryConfiguration that you’re using defaults 
the bundle location to the location of the bundle which got the 
ConfigurationAdmin service instance that you’re using. This is almost never the 
correct location as it usually means only the management bundle can see your 
configuration.

The location binding behaviour is so annoying that the general recommendation 
is to disable it by using the two arg versions of Config Admin methods with a 
wildcard location binding (a “?”).

My guess is that the two arg version will give you what you’re looking for.

Tim
Sent from my iPhone

On 9 Dec 2017, at 00:36, Leschke, Scott via osgi-dev 
<osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>> wrote:
How does one create a new instance of a factory configuration programmatically?

I thought it was like

ConfigurationAdmin ca;
ca.createFactoryConfiguration(“my.configuration.pid”).update(newServiceProps);

but that doesn’t seem to work for me.

Thanks in advance,

Scott
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>
https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>
https://mail.osgi.org/mailman/listinfo/osgi-dev

_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to