You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@karaf.apache.org by lbu <lb...@gmail.com> on 2013/10/29 11:59:09 UTC
ConfigAdmin and OSGi Blueprint
Hi,
I'm trying to figure-out which is the best option to configure a bean
instantiated via OSGi Blueprint and I have a some question for which I
haven't found the answer:
1) is there any way to reference to the cm:property-placeholder's
persistent-id? So I can write something like:
<cm:property-placeholder persistent-id="my.service.pid"
update-strategy="reload">
</cm:property-placeholder>
<bean id="my.bean.id" class="my.bean.Class">
<property name="servicePid" value="${persistent-id}"/>
</bean>
2) is there any way to have the ConfigAdmin to call Class.update(Map ...)
when the bean is instantiated?
<cm:property-placeholder persistent-id="my.service.pid"
update-strategy="reload">
</cm:property-placeholder>
<bean id="my.bean.id" class="my.bean.Class">
</bean>
class my.bean.Class {
public void update(Map configuration) {
....
}
}
thx - Luca
--
View this message in context: http://karaf.922171.n3.nabble.com/ConfigAdmin-and-OSGi-Blueprint-tp4030097.html
Sent from the Karaf - User mailing list archive at Nabble.com.
Re: ConfigAdmin and OSGi Blueprint
Posted by lb <lb...@gmail.com>.
Hi,
I've used the suggested approach to inject the whole map:
<cm:property-placeholder id="myConfig" persistent-id="my.service.pid">
</cm:property-placeholder>
<bean id="my.bean.id" class="my.bean.Class">
<property name="config" ref="myConfig"/>
</bean>
But the injected object is an instance of CmPropertyPlaceholder: is there a
way to inject a plain Map/Dictionary/Properties ?
Thx
On Wed, Oct 30, 2013 at 6:03 PM, Johan Edstrom <se...@gmail.com> wrote:
> You'd need to listen for config changes or ensure that you have update
> hooks or perhaps use a ManagedServiceFactory
>
> Sent from my pressure cooker.
>
> On Oct 29, 2013, at 10:37, Christian Schneider <ch...@die-schneider.net>
> wrote:
>
> I would keep the update strategy reload. As far as I know it is the only
> way to keep up to date with config changes.
>
> Christian
>
> Am 29.10.2013 13:45, schrieb lb:
>
> reload is something left from copy-and-past :-)
>
> thx for the hint.
> —
> lb
>
>
> On Tue, Oct 29, 2013 at 1:12 PM, Christian Schneider <
> chris@die-schneider.net> wrote:
>
>> On 29.10.2013 11:59, lbu wrote:
>> > Hi,
>> > I'm trying to figure-out which is the best option to configure a bean
>> > instantiated via OSGi Blueprint and I have a some question for which I
>> > haven't found the answer:
>> >
>> > 1) is there any way to reference to the cm:property-placeholder's
>> > persistent-id? So I can write something like:
>> >
>> > <cm:property-placeholder persistent-id="my.service.pid"
>> > update-strategy="reload">
>> > </cm:property-placeholder>
>> >
>> > <bean id="my.bean.id" class="my.bean.Class">
>> > <property name="servicePid" value="${persistent-id}"/>
>> > </bean>
>> The persistent id is reflected as property ${service.pid}
>> > 2) is there any way to have the ConfigAdmin to call Class.update(Map
>> ...)
>> > when the bean is instantiated?
>> >
>> > <cm:property-placeholder persistent-id="my.service.pid"
>> > update-strategy="reload">
>> > </cm:property-placeholder>
>> >
>> > <bean id="my.bean.id" class="my.bean.Class">
>> > </bean>
>> >
>> > class my.bean.Class {
>> > public void update(Map configuration) {
>> > ....
>> > }
>> > }
>> >
>> > thx - Luca
>>
>> Reload means that the whole context is reloaded when the config changes.
>> So it is not really an update but you can inject the whole map.
>>
>> <cm:property-placeholder id="myConfig" persistent-id="my.service.pid"
>> update-strategy="reload">
>> </cm:property-placeholder>
>>
>> <bean id="my.bean.id" class="my.bean.Class">
>> <property name="config" ref="myConfig"/>
>> </bean>
>>
>>
>> Christian
>>
>>
>> --
>> Christian Schneider
>> http://www.liquid-reality.de
>>
>> Open Source Architect
>> http://www.talend.com
>>
>>
>
>
> --
>
> Christian Schneiderhttp://www.liquid-reality.de
>
> Open Source Architect
> Talend Application Integration Division http://www.talend.com
>
>
Re: ConfigAdmin and OSGi Blueprint
Posted by Johan Edstrom <se...@gmail.com>.
You'd need to listen for config changes or ensure that you have update hooks or perhaps use a ManagedServiceFactory
Sent from my pressure cooker.
On Oct 29, 2013, at 10:37, Christian Schneider <ch...@die-schneider.net> wrote:
> I would keep the update strategy reload. As far as I know it is the only way to keep up to date with config changes.
>
> Christian
>
> Am 29.10.2013 13:45, schrieb lb:
>> reload is something left from copy-and-past :-)
>>
>> thx for the hint.
>> —
>> lb
>>
>>
>> On Tue, Oct 29, 2013 at 1:12 PM, Christian Schneider <ch...@die-schneider.net> wrote:
>>> On 29.10.2013 11:59, lbu wrote:
>>> > Hi,
>>> > I'm trying to figure-out which is the best option to configure a bean
>>> > instantiated via OSGi Blueprint and I have a some question for which I
>>> > haven't found the answer:
>>> >
>>> > 1) is there any way to reference to the cm:property-placeholder's
>>> > persistent-id? So I can write something like:
>>> >
>>> > <cm:property-placeholder persistent-id="my.service.pid"
>>> > update-strategy="reload">
>>> > </cm:property-placeholder>
>>> >
>>> > <bean id="my.bean.id" class="my.bean.Class">
>>> > <property name="servicePid" value="${persistent-id}"/>
>>> > </bean>
>>> The persistent id is reflected as property ${service.pid}
>>> > 2) is there any way to have the ConfigAdmin to call Class.update(Map ...)
>>> > when the bean is instantiated?
>>> >
>>> > <cm:property-placeholder persistent-id="my.service.pid"
>>> > update-strategy="reload">
>>> > </cm:property-placeholder>
>>> >
>>> > <bean id="my.bean.id" class="my.bean.Class">
>>> > </bean>
>>> >
>>> > class my.bean.Class {
>>> > public void update(Map configuration) {
>>> > ....
>>> > }
>>> > }
>>> >
>>> > thx - Luca
>>>
>>> Reload means that the whole context is reloaded when the config changes.
>>> So it is not really an update but you can inject the whole map.
>>>
>>> <cm:property-placeholder id="myConfig" persistent-id="my.service.pid"
>>> update-strategy="reload">
>>> </cm:property-placeholder>
>>>
>>> <bean id="my.bean.id" class="my.bean.Class">
>>> <property name="config" ref="myConfig"/>
>>> </bean>
>>>
>>>
>>> Christian
>>>
>>>
>>> --
>>> Christian Schneider
>>> http://www.liquid-reality.de
>>>
>>> Open Source Architect
>>> http://www.talend.com
>
>
> --
>
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> Talend Application Integration Division http://www.talend.com
Re: ConfigAdmin and OSGi Blueprint
Posted by Christian Schneider <ch...@die-schneider.net>.
I would keep the update strategy reload. As far as I know it is the only
way to keep up to date with config changes.
Christian
Am 29.10.2013 13:45, schrieb lb:
> reload is something left from copy-and-past :-)
>
> thx for the hint.
> —
> lb
>
>
> On Tue, Oct 29, 2013 at 1:12 PM, Christian Schneider
> <chris@die-schneider.net <ma...@die-schneider.net>> wrote:
>
> On 29.10.2013 11:59, lbu wrote:
> > Hi,
> > I'm trying to figure-out which is the best option to configure a
> bean
> > instantiated via OSGi Blueprint and I have a some question for
> which I
> > haven't found the answer:
> >
> > 1) is there any way to reference to the cm:property-placeholder's
> > persistent-id? So I can write something like:
> >
> > <cm:property-placeholder persistent-id="my.service.pid"
> > update-strategy="reload">
> > </cm:property-placeholder>
> >
> > <bean id="my.bean.id" class="my.bean.Class">
> > <property name="servicePid" value="${persistent-id}"/>
> > </bean>
> The persistent id is reflected as property ${service.pid}
> > 2) is there any way to have the ConfigAdmin to call
> Class.update(Map ...)
> > when the bean is instantiated?
> >
> > <cm:property-placeholder persistent-id="my.service.pid"
> > update-strategy="reload">
> > </cm:property-placeholder>
> >
> > <bean id="my.bean.id" class="my.bean.Class">
> > </bean>
> >
> > class my.bean.Class {
> > public void update(Map configuration) {
> > ....
> > }
> > }
> >
> > thx - Luca
>
> Reload means that the whole context is reloaded when the config
> changes.
> So it is not really an update but you can inject the whole map.
>
> <cm:property-placeholder id="myConfig" persistent-id="my.service.pid"
> update-strategy="reload">
> </cm:property-placeholder>
>
> <bean id="my.bean.id" class="my.bean.Class">
> <property name="config" ref="myConfig"/>
> </bean>
>
>
> Christian
>
>
> --
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> http://www.talend.com
>
>
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
Talend Application Integration Division http://www.talend.com
Re: ConfigAdmin and OSGi Blueprint
Posted by lb <lb...@gmail.com>.
reload is something left from copy-and-past :-)
thx for the hint.
—
lb
On Tue, Oct 29, 2013 at 1:12 PM, Christian Schneider
<ch...@die-schneider.net> wrote:
> On 29.10.2013 11:59, lbu wrote:
>> Hi,
>> I'm trying to figure-out which is the best option to configure a bean
>> instantiated via OSGi Blueprint and I have a some question for which I
>> haven't found the answer:
>>
>> 1) is there any way to reference to the cm:property-placeholder's
>> persistent-id? So I can write something like:
>>
>> <cm:property-placeholder persistent-id="my.service.pid"
>> update-strategy="reload">
>> </cm:property-placeholder>
>>
>> <bean id="my.bean.id" class="my.bean.Class">
>> <property name="servicePid" value="${persistent-id}"/>
>> </bean>
> The persistent id is reflected as property ${service.pid}
>> 2) is there any way to have the ConfigAdmin to call Class.update(Map ...)
>> when the bean is instantiated?
>>
>> <cm:property-placeholder persistent-id="my.service.pid"
>> update-strategy="reload">
>> </cm:property-placeholder>
>>
>> <bean id="my.bean.id" class="my.bean.Class">
>> </bean>
>>
>> class my.bean.Class {
>> public void update(Map configuration) {
>> ....
>> }
>> }
>>
>> thx - Luca
> Reload means that the whole context is reloaded when the config changes.
> So it is not really an update but you can inject the whole map.
> <cm:property-placeholder id="myConfig" persistent-id="my.service.pid"
> update-strategy="reload">
> </cm:property-placeholder>
> <bean id="my.bean.id" class="my.bean.Class">
> <property name="config" ref="myConfig"/>
> </bean>
> Christian
> --
> Christian Schneider
> http://www.liquid-reality.de
> Open Source Architect
> http://www.talend.com
Re: ConfigAdmin and OSGi Blueprint
Posted by Christian Schneider <ch...@die-schneider.net>.
On 29.10.2013 11:59, lbu wrote:
> Hi,
> I'm trying to figure-out which is the best option to configure a bean
> instantiated via OSGi Blueprint and I have a some question for which I
> haven't found the answer:
>
> 1) is there any way to reference to the cm:property-placeholder's
> persistent-id? So I can write something like:
>
> <cm:property-placeholder persistent-id="my.service.pid"
> update-strategy="reload">
> </cm:property-placeholder>
>
> <bean id="my.bean.id" class="my.bean.Class">
> <property name="servicePid" value="${persistent-id}"/>
> </bean>
The persistent id is reflected as property ${service.pid}
> 2) is there any way to have the ConfigAdmin to call Class.update(Map ...)
> when the bean is instantiated?
>
> <cm:property-placeholder persistent-id="my.service.pid"
> update-strategy="reload">
> </cm:property-placeholder>
>
> <bean id="my.bean.id" class="my.bean.Class">
> </bean>
>
> class my.bean.Class {
> public void update(Map configuration) {
> ....
> }
> }
>
> thx - Luca
Reload means that the whole context is reloaded when the config changes.
So it is not really an update but you can inject the whole map.
<cm:property-placeholder id="myConfig" persistent-id="my.service.pid"
update-strategy="reload">
</cm:property-placeholder>
<bean id="my.bean.id" class="my.bean.Class">
<property name="config" ref="myConfig"/>
</bean>
Christian
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com