KARAF v4.0.8:多个蓝图无法从同一持久ID加载配置



更新:出于某种原因,花了一点时间才能实现,但是我看到配置文件是特定于bundle pid的,并且通过尝试将相同的CFG文件加载在两个不同的捆绑中,我正在创造种族条件。确保仅在其目标捆绑包中使用CFG文件。

注意:以上仅适用于蓝图捆绑包。如果您不依赖OSGI ConfigAdmin服务来保持捆绑包的动态,并希望从骆驼上下文之类的内容中使用CFG文件,那应该很好。

我有2个通过KARAF 4.0.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 https://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
    <cm:property-placeholder id="common" persistent-id="common" update-strategy="reload" placeholder-prefix="$(" placeholder-suffix=")"/> 
    <cm:property-placeholder id="sqlcfg" persistent-id="12345" update-strategy="reload" placeholder-prefix="$[" placeholder-suffix="]">
    </cm:property-placeholder> 

我想加载"共同"共同的配置。但是,当他们从" etc"文件夹共享相同的persistentid和属性文件时,要部署的蓝图第二次保持加载和卸载。如果我让它们从不同的文件加载 - 这一切都可以。

社区的任何想法为什么我有这种行为?预先感谢。

根据我的经验,您要么设置另一个持久ID或设置update-strategy =" none"。这将阻止第二个模块进入加载/卸载环。

缺点是您丢失了配置文件的自动刷新。

相关内容

最新更新