不要手动对Felix中的OSGi组件进行配置更改,最好在JCR中创建sling:OsgiConfig
个节点,以确保设置受版本控制,跨环境应用相同的设置等。
同样,我想在每个环境中禁用开箱即用的组件。有没有办法通过配置实现这一目标?而不是去system/console/components
并在那里禁用它?
我读到的任何内容都提到了在内部进行更改,但由于它是我不拥有的,我需要一些外部配置来执行此操作。
答案 0 :(得分:1)
您可以使用SCR运行时捆绑包发布的ScrService
执行此操作。 API文档为here。
请注意,ScrService不是“标准”,即它不是来自OSGi规范。然而它受到Felix和Equinox以及Knopflerfish的支持,所以它几乎是事实上的标准。实际上,当您转到system/console/components
时,Web服务器将使用此服务。
答案 1 :(得分:0)
尝试在policy=ConfigurationPolicy.REQUIRE
上使用属性@Component
。
然后,您可以为每个环境准备一组包,作为构建的一部分。对于为每个环境提供不同的OSGI配置,这也是一种很好的做法。
因此,对于某些环境,您可能只是不能为特定组件提供配置。这样的组件不会运行 - 它会有不满意的状态。
我相信我已经在AEM中看到了这种方法。
您还可以创建一个过滤器来删除当前配置,但仍需要至少禁用一次该组件。此解决方案仅在此组件提及策略时才有效。
另一种方法是准备一个负责禁用其他组件的服务 - 它可以是可配置的。但这对我来说听起来不是一个好的解决方案。