sling - 何时显式关闭 Sling 中的 ResourceResolver

标签 sling

我已阅读 this关于如何正确使用resourceResolver的博客。作者引用

If you open a JCR session of a Sling ResourceResolver, you are also responsible for closing it. On the other hand: If you get passed a ResourceResolver or a Session object, do not call logout() or close() on it.

我无法理解这个概念,可能是因为在这种情况下没有代码示例。

据我所知,我可以通过servlet中的request.getResourceResolver()、在OSGi组件中使用@Reference SCR注释、jsp的隐式resourceResolver对象、在jsp中使用sling.getService()以及通过适配ResourceResolver对象。

在获取resourceResolver对象的所有方式中,我应该关闭哪些方式以及与每个对象关联的 session 是什么?

最佳答案

将其视为文件资源。

  • 如果您打开它,您有责任将其关闭
  • 如果您使用对该文件的引用,则您没有责任关闭它

因此,您的代码应该在同一范围内打开和关闭。

如果您从资源获取resourceResolver,则您没有打开解析器,也不需要关闭它。

在博客的示例中,他们从 session = repo.loginAdministrative() 生成一个 session (Repository 不再有此方法);因此负责在同一范围内调用 session.logout()(使用 finally {...} block )。

关于sling - 何时显式关闭 Sling 中的 ResourceResolver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587970/

相关文章:

java - Apache Sling 中 resourceResolver.adaptTo(Session.class) 的用途是什么?

AEM 6.1 Sightly 基本表单提交并重定向到同一页面

java - 解决 Sling OSGi 容器中的依赖项错误

aem - 为什么我们在使用 AEM 时扩展 WCMUsePojo 类?

java - 如何在 Eclipse 中通过远程 Java 应用程序调试来调试 Groovy 代码

java - 如何在 CQ5 中执行 JSP 之前调用 Servlet/Filter?

adobe - 克服 cq :Page nodes in AEM 6. 1 的 1000+ 节点限制

annotations - AEM Osgi Sling 模型 @PostConstruct 从未调用过

maven - 吊索模型,未找到适应类,忽略

java - 在 sling servlet 中调用除 doGet 或 doPost 之外的不同方法