如何从数据库加载Blueprint XML的属性

时间:2017-03-13 09:39:04

标签: java apache-karaf blueprint-osgi

我需要从数据库加载Blueprint XML的一些属性。如何在Blueprint XML中执行此操作?我一直在努力寻找蓝图的好例子。是否有类似于Spring PropertyPlaceholderConfigurer的内容?

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
    xmlns:cxf="http://cxf.apache.org/blueprint/core"
    xsi:schemaLocation="
      http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
      http://cxf.apache.org/blueprint/jaxrs http://cxf.apache.org/schemas/blueprint/jaxrs.xsd
      http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd">
    <jaxrs:server id="restService" address="{{url.in}}">
    <jaxrs:serviceBeans>
        <ref component-id="restSvc"/>
    </jaxrs:serviceBeans>
    </jaxrs:server>
</bean>

1 个答案:

答案 0 :(得分:0)

Blueprint还有属性占位符(请参阅apache camel documentation)。

它不如spring强大,但它允许在属性文件中存储配置(在karaf的情况下,在/ etc目录中)并且karaf配置为对配置更改作出反应并调用confiugred的init-method豆。

示例配置:

<cm:property-placeholder persistent-id="com.example.persistence" update-strategy="reload">
    <cm:default-properties>
        <cm:property name="url.in" value="example.com/rest"/>
    </cm:default-properties>
</cm:property-placeholder>

蓝图不如Spring强大,所以如果你想要那里没有提供的东西,你应该切换到Spring或者重新考虑你的架构。