【问题标题】:Where are the Configurations made in OSGi Console saved?OSGi 控制台中的配置保存在哪里?
【发布时间】:2017-02-20 08:25:47
【问题描述】:

当我们在 Apache Felix Web OSGi 控制台的“配置”选项卡中更新组件的任何配置时,这些配置设置保存在哪里?这是针对 AEM 6.0 或更高版本的。

【问题讨论】:

    标签: osgi aem apache-felix aem-6


    【解决方案1】:

    手动保存的配置设置存储在 crx-quickstart/launchpad/config 目录中(在本地文件系统中的 AEM 安装文件夹中),除此之外,作为 .config 文件存储在位于 /apps/system/config 的 Content Respository 中。

    例如,如果您要查找 com.example.MyComponent 的配置,您可以在 crx-quickstart/launchpad/config/com/example/MyComponent.config(在本地文件系统中)和内容存储库中的 /apps/system/config/com.example.MyComponent.config 中以文本文件的形式找到它。

    当您在 OSGi 控制台中手动更改设置时,这两个位置的文件会更新。

    在 AEM 中,您还可以将配置存储在 sling:OsgiConfig 类型的 JCR 节点中。当您手动保存配置时,它们不会被创建或更新,但它们提供了一种将配置作为内容管理的简洁方式。

    当 AEM 查找配置时,使用以下解析顺序:

    1. /apps/*/config 下的节点,无论是属性文件还是带有jcr:primaryType 的节点sling:OsgiConfig 的JCR 节点
    2. /libs/*/config 下类型为 sling:OsgiConfig 的节点,这些是 AEM 附带的组件的 OOTB 定义
    3. .config files 来自本地文件系统上的 <aem-installation-directory>/crx-quickstart/launchpad/config/

    根据 Apache Sling JCR 安装程序的 OSGi 配置,当您手动更改配置时,sling:OsgiConfig 节点可以被写回。还有一些设置会影响上述配置的查找,因此最好熟悉此配置。

    请查看official documentation 了解更全面的信息。

    如果您试图让存储在 sling:OsgiConfig 节点中的配置按预期工作,并且您不确定同一服务的另一个配置是否已缓存在某处,那么下面是对我有用的一系列步骤在 AEM 6.4 中始终如一:

    1. 删除刚刚创建的sling:OsgiConfig节点
    2. 转到 Felix 控制台的 configMgr,找到相关服务并删除配置。
    3. 重新创建 sling:OsgiConfig 节点(我通常将它们保存在 CRX 包中,我可以简单地重新安装)

    【讨论】:

      【解决方案2】:

      配置由 felix configadmin 包存储在 felix 包缓存中。不确定此缓存在 AEM 中的位置。在 Apache Karaf 中,我的配置位于:

      data/cache/bundle7/date/config
      

      其中 bundle id 7 是 configadmin bundle 的 ID。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        • 2021-04-17
        • 2013-12-25
        相关资源
        最近更新 更多