以编程方式在 OSGI 中创建/修改和注册过滤器

问题描述 投票:0回答:1

是否可以在运行时在 OSGI 中注册新的过滤器?

用例如下。我们将 Adobe AEM CMS 与多个租户一起使用。现在我们有一个过滤器,可以根据过滤器模式保护对特定资源的访问。这是过滤器类的标头,该过滤器类拦截对包含 tenant1“受保护”片段的路径的请求。

@Component(service = Filter.class,
    property = {
            EngineConstants.SLING_FILTER_SCOPE + "=" + EngineConstants.FILTER_SCOPE_REQUEST,
            EngineConstants.SLING_FILTER_PATTERN + "=" + "/content/dam/tenant1/.*/protected/.*"
    })
 public class ProtectedResourcesFilter implements Filter ....

现在,每当我们获得 tenant2 时,我们都想用另一种模式扩展 ProtectedResourcesFilter。是否可以修改

EngineConstants.SLING_FILTER_PATTERN 
并重新加载过滤器?

或者在 OSGI 中运行时创建并注册一个新的过滤器是否更好?

osgi aem servlet-filters sling
1个回答
0
投票

或者在 OSGI 中运行时创建并注册一个新的过滤器是否更好 ?

这有点矫枉过正,但如果你真的想这样做,答案是肯定的。请参阅 https://cwiki.apache.org/confluence/display/FELIX/Apache+Felix+HTTP+Service#ApacheFelixHTTPService-UsingtheExtHttpService

© www.soinside.com 2019 - 2024. All rights reserved.