I've also tried adding the following to my blueprint.xml:
<cm:managed-properties persistent-id="orchestration.processor.xslt"
update-strategy="container-managed"/>
According to the schema I think this should be valid but I get the
following exception:
2013-10-07 09:01:25,436 | ERROR | rint Extender: 3 | BlueprintContainerImpl
| container.BlueprintContainerImpl 393 | Unable to start
blueprint container for bundle
se.digia.connect-sts.orchestration.xslt-processor
org.osgi.service.blueprint.container.ComponentDefinitionException:
Unsupported element: cm:managed-properties
at
org.apache.aries.blueprint.compendium.cm.CmNamespaceHandler.parse(CmNamespaceHandler.java:182)[8:org.apache.aries.blueprint.cm:1
.0.1]
....
It seems like I'm doing something seriously wrong. Can anyone direct me to
a working example using managed service factories? Blueprint works fine for
me otherwise but not with managed service factories.
/Bengt
2013/10/4 Bengt Rodehav <[email protected]>
> I'm using Karaf.2.3.1 and thus Aries Blueprint 1.1.0.
>
> I use both iPOJO and Blueprint in different circumstances. So far I've
> always used iPOJO concerning managed service factories and Blueprint for
> the rest.
>
> I'm now trying to use Blueprint for managed service factories but I can't
> get it to work.
>
> My blueprint.xml looks as follows (I removed the real class names):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="
> http://www.w3.org/2001/XMLSchema-instance"
> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
> xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0"
> default-activation="lazy">
>
> <cm:property-placeholder persistent-id="myPersistentId"
> update-strategy="reload">
> <cm:default-properties>
> <cm:property name="myProp" value="myValue"/>
> </cm:default-properties>
> </cm:property-placeholder>
>
> <cm:managed-service-factory id="managed-service-factory"
> factory-pid="myPersistentId" interface="myQualifiedInterfaceName">
> <service-properties>
> <entry key="myProp" value="${myProp}"/>
> </service-properties>
> <cm:managed-component class="myQualifiedClassName">
> <property name="myProp" value="${myProp}"/>
> </cm:managed-component>
> </cm:managed-service-factory>
>
> </blueprint>
>
> I create a configuration file called "myPersistentId-1.cfg" (I use
> fileinstall). It contains the following:
>
> myProp=value
>
> Using Felix Webconsole I can see that the configuration is picked up. I
> can also see that my bundle publishes three services with the following
> types:
>
> - org.osgi.service.blueprint.container.BlueprintContainer
> - org.osgi.service.cm.ManagedService
> - org.osgi.service.cm.ManagedServiceFactory
>
> But I can't see any published service for my type
> (myQualifiedInterfaceName above).
>
> By logging in the constructor of "myQualifiedClassName" I can see that a
> Java object is instantiated. I can also see that the "setMyProp" method is
> being called. However, the property value that I specify in the
> configuration file (myPersistentId-1.cfg) is never picked up, only the
> default value is ever used.
>
> In summary I have two serious problems:
>
> 1. No service is registered
> 2. The configuration properties are not used - only the default values are
> used
>
> Am I doing something wrong or should this work?
>
> /Bengt
>
>
>