AEM ResourceResolver关闭?

Fin*_*inn 1 aem

我使用两种方式在我的AEM代码中使用Sling ResourceResolver.

  1. 使用ResourceResolverFactory获取它.

    @Reference
    ResourceResolverFactory工厂;
    ResourceResolver resolver = factory.getResourceResolver();

我在finally块中使用此ResourceResolver.

finally{
resolver.close();}
Run Code Online (Sandbox Code Playgroud)
  1. 使用SlingHttpServletRequest获取它

    ResourceResolver resolver = request.getResourceResolver();

我的问题是,我是否需要关闭从SlingHttpServletRequest获取的ResourceResolver,或者当请求终止时,它的ResourceResolver也将被关闭?

San*_*mar 11

我们从SlingHttpServletRequest获取的ResourceResolver由容器管理,我们不应该关闭它.根据官方文档

资源解析器的生命周期从使用任何工厂方法创建资源解析程序开始,最后调用close()方法.一旦不再使用资源解析器来调用close()方法以确保正确清理任何系统资源,这一点非常重要.

因此,我们从工厂获得的ResourceResolver应该由我们自己的代码管理.另外看看这个链接.这样可以很好地了解ResourceResolver和Sessions,这些内容对于Sling和JCR来说非常重要