保存在OSGi Console中的配置在哪里?

时间:2017-02-20 08:25:48

标签: osgi aem apache-felix aem-6

当我们在Apache Felix Web OSGi控制台的“配置”选项卡中更新组件的任何配置时,这些配置设置保存在哪里?这与AEM 6.0或以上有关。

2 个答案:

答案 0 :(得分:11)

手动保存的配置设置存储在crx-quickstart/launchpad/config目录(在本地文件系统的AEM安装文件夹中)中,最重要的是存储在内容存储库中的.config文件中。 /apps/system/config

例如,如果您正在寻找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
  2. 节点sling:OsgiConfig的属性文件或JCR节点
  3. sling:OsgiConfig/libs/*/config类型的节点,这些是AEM附带组件的OOTB定义
  4. 来自本地文件系统.config files
  5. <aem-installation-directory>/crx-quickstart/launchpad/config/
  6. 根据 Apache Sling JCR安装程序的OSGi配置,可以在手动更改配置时写回sling:OsgiConfig个节点。还有许多设置会影响所述配置的查找,因此最好让自己熟悉这个配置。

    请查看official documentation以获取更全面的信息。

    如果您尝试将存储在sling:OsgiConfig节点中的配置按预期工作,并且您不确定是否已在某处缓存了同一服务的另一个配置,那么这里有一系列步骤可行对于我来说,在AEM 6.4中始终如一:

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

答案 1 :(得分:1)

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

data/cache/bundle7/date/config

其中bundle id 7是configadmin包的id。