当我们在 Apache Felix Web OSGi 控制台的配置选项卡中更新组件的任何配置时,这些配置设置保存在哪里?这是针对 AEM 6.0 或更高版本的。
2 回答
手动保存的配置设置存储在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 中,您还可以将配置存储在 JCR 类型的节点中sling:OsgiConfig
。当您手动保存配置时,这些不会被创建或更新,但它们提供了一种将配置作为内容管理的简洁方式。
当 AEM 查找配置时,使用以下解决顺序:
- 下的节点,无论是属性文件还是具有节点的
/apps/*/config
JCR 节点jcr:primaryType
sling:OsgiConfig
sling:OsgiConfig
类型under的节点/libs/*/config
,这些是 AEM 附带的组件的 OOTB 定义.config files
从<aem-installation-directory>/crx-quickstart/launchpad/config/
本地文件系统。
根据Apache Sling JCR Installer的 OSGi 配置,当您手动更改配置时,可以将sling:OsgiConfig
节点写回。还有许多设置会影响所述配置的查找,因此熟悉此配置是个好主意。
请查看官方文档以获取更全面的信息。
如果您尝试让存储在sling:OsgiConfig
节点中的配置按预期工作,并且您不确定同一服务的另一个配置是否已缓存在某处,以下是在 AEM 6.4 中一直对我有用的一系列步骤:
- 删除
sling:OsgiConfig
刚刚创建的节点 - 进入 Felix 控制台
configMgr
,找到相关服务并删除配置。 - 重新创建
sling:OsgiConfig
节点(我通常将它们保存在 CRX 包中,我可以简单地重新安装)
配置由 felix configadmin 包存储在 felix 包缓存中。不确定此缓存在 AEM 中的位置。在 Apache Karaf 中,我的配置位于:
data/cache/bundle7/date/config
其中 bundle id 7 是 configadmin bundle 的 id。