如何使用Karaf功能为托管服务工厂创建配置?

时间:2014-08-04 21:04:38

标签: java osgi apache-karaf karaf amdatu

我正在尝试为Amdatu's MongoDB组件创建一个简单的配置。当我在org.amdatu.mongo-kairos.cfg内创建一个名为dbName=kairos的文件并将其放入部署文件夹时 - 一切正常。但是,当我尝试在config中使用features.xml标记时,没有任何反应。

我的功能文件的一部分,它使用configuration tag

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

1 个答案:

答案 0 :(得分:0)

如用户邮件列表中所述,这是一个已知问题,但可以使用 configfile 来解决。通过定义多个配置文件,管理服务工厂还可以与功能定义一起使用:

<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>

此外,使用配置文件和maven可以与应用程序一起进行版本配置:

<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>