【问题标题】:AEM Sling Resource Resolver Mapping MethodsAEM Sling 资源解析器映射方法
【发布时间】:2020-03-30 22:49:11
【问题描述】:

我已经在 Internet 上四处寻找有关配置 Sling Resource Resolver 映射的更多信息。根据我在网上找到的信息和我的经验,目前在 AEM 中有两种方法可以实现此目的。

  1. 通过org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl OSGi 属性 resource.resolver.mapping
  2. 通过 org.apache.sling.jcr.resource.internal.JcrResourceResolverFactoryImpl OSGI 属性 resource.resolver.map.location 指定的资源

Mappings for Resource Resolution 上的 Sling 文档和 Resource Mapping 上的 AEM 文档似乎都建议使用利用属性 resource.resolver.map.location 的方法 (2) 是推荐的方法,因为它是文档中解释的唯一方法。

我很想澄清这一点,并对该主题有更好的理解。我认为关于这个主题的大多数在线资源在解释这两种方法的差异以及使用其中一种方法的好处方面缺乏深度。非常欢迎有关此主题的更详细的见解、解释和实用插图。

谢谢

【问题讨论】:

    标签: java configuration osgi aem sling


    【解决方案1】:

    我也无法给出答案。但是,如果您查看MapEntries#doUpdateConfiguration(第 428 行)的代码,那么您可以看到以下条目最终合并到同一个内部查找映射中。所以技术上没有区别。

    • resource.resolver.virtual
    • resource.resolver.mapping
    • resource.resolver.map.location

    查看代码: https://github.com/apache/sling-org-apache-sling-resourceresolver/blob/master/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java


    我的理解

    据我所知,至少从 CQ 5 开始,推荐的方法是使用resource.resolver.map.location。这是最灵活的方式。由于历史原因,其他人可能仍然存在。


    大型多品牌/多团队项目

    /etc/map 的另一个充分理由是,具有多个团队和品牌的大型项目必须避免全局 OSGi 配置(考虑像联合利华这样的东西)。因此,许多其他 OSGi 配置也有另一种配置方式:

    • 由配置工厂(Sling Service User Mapper / Sling Service User Mapper Amendment)
    • 按服务配置(Sling 身份验证服务中的 sling.auth.requirements)
    • 或通过全局内容结构(您的示例使用 /etc/maps)

    在这种情况下,总是更喜欢变体,它允许多个团队独立提供他们的配置部分。在您的情况下,团队可以在 /etc/map 下提供不同的子树


    PS:我什至不确定正则表达式是否在 OSGi 配置中工作。这也代表/etc/maps

    【讨论】:

      猜你喜欢
      • 2016-11-14
      • 2023-04-01
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2016-07-03
      • 2016-01-23
      • 2016-09-21
      相关资源
      最近更新 更多