How to create configuration for Managed Service Factory with Karaf features?

655 Views Asked by At

I'm trying to create a simple configuration for Amdatu's MongoDB component. When I create a file named org.amdatu.mongo-kairos.cfg with following line inside dbName=kairos and put it into the deploy folder - everything works OK. However, when I'm trying to use config tag in features.xml nothing happens.

Part of my feature file, which uses configuration tag:

<feature name="persistency" version="0.0.1-SNAPSHOT" description="MongoDB Persistency">
    //(...)
    <config name="org.amdatu.mongo-kairos">
        dbName=kairos
    </config>
</feature>
1

There are 1 best solutions below

0
On BEST ANSWER

As mentioned on the users mailing-list it's a known issue but can be worked around with using a configfile instead. With defining multiple configuration files the management service factory can also be used with a feature definition:

<feature name="persistence" version="1.0.0-SNAPSHOT" description="MongoDB Persistence">
    <configfile finalname="/etc/org.amdatu.mongo-kairos.cfg">
        mvn:groupId/persistency-config/version/cfg
    </configfile>
    <configfile finalname="/etc/org.amdatu.mongo-suez.cfg">
        mvn:groupId/artifactId/versionId/jar
    </configfile>
    //.. a list of bundles
</feature>

Moreover, using config files along with maven allows to version configurations along with the application:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <executions>
        <execution>
            <id>persistency-config</id>
            <phase>install</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>${project.groupId}</groupId>
                <artifactId>persistency-config</artifactId>
                <version>${project.version}</version>
                <packaging>cfg</packaging>
                <file>config/org.amdatu.mongo-kairos.cfg</file>
            </configuration>
        </execution>
    </executions>
</plugin>