如何从osgi捆绑包属性文件中引用公共属性文件?

时间:2019-05-22 07:45:33

标签: apache-karaf blueprint-osgi

目前,我有许多功能/包都引用了一个自命名的属性文件。我想创建许多公共属性文件,这些文件包含在单个捆绑软件属性文件中。

我知道这在核心Java中不起作用,但是我确定我读过某个地方,可以在Karaf / OSGi / Blueprint中包含属性文件,但是现在我想这样做,我找不到我一直在搜索的任何网站上的任何参考。

我在任何地方都找不到的语法是如何做到的。谁能确认如果这是可能的,如果可以,那么语法是什么?任何指向合适文档的指针也将受到欢迎。

谢谢!

2 个答案:

答案 0 :(得分:0)

假设您正在使用捆绑软件蓝图:

<?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.3.0"
           xmlns:camel="http://camel.apache.org/schema/blueprint"
           xsi:schemaLocation="
             http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
             http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
             http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.3.0.xsd
             ">
    <cm:property-placeholder persistent-id="my.shared" update-strategy="reload" >
        <cm:default-properties>
            <cm:property name="SOURCE" value="DB" />
            <cm:property name="ENV" value="test" />
        </cm:default-properties>
    </cm:property-placeholder>
</blueprint>

为此,您可以在my.shared.cfg目录中拥有一个cm:property-placeholder(在${KARAF_HOME}/etc标签中查看属性persistent-id的值)文件。

my.shared.cfg文件将具有:

SOURCE=DB
ENV=test

假设您要使用该值从蓝图中实例化Bean,可以执行以下操作:

<bean id="myCustomBean" class="com.example.CustomBeanClass">
    <argument value="${SOURCE}" index="0" />
    <argument value="${ENV}" index="1" />
</bean>

您可以参考here以获得信息。

如果这没有帮助,请告诉我。

关于, 库萨尔。

答案 1 :(得分:0)

您可以使用cm:property-placeholder获取属性文件的值, 我用蓝图开发了一个简单的例子

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="  http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd     http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
<cm:property-placeholder
    persistent-id="org.usr.config" />
<camelContext id="log-example-context"
    xmlns="http://camel.apache.org/schema/blueprint">
    <route id="log-route">
        <from id="_from1" uri="timer:foo?repeatCount=1" />
        <log id="_log1" message="logging the property value::" />
        <log id="_log1" message="{{conf.data}}" />
    </route>
</camelContext>

org.usr.config应该作为org.usr.config.cfg放在$ KARAF_HOME / etc /中。

属性可以像下面一样

 conf.data=Chandra

您可以参考我的示例GIT

您可以在Apache community document

上获得更多知识

我希望这会有所帮助,