我从ResourceResolverFactory获取ResourceResolver对象,即我正在创建此resourceResolver,我正在适应Session.
Session session = resourceResolver.adaptTo(Session.class);
Run Code Online (Sandbox Code Playgroud)
我是否需要关闭两者,解析器和会话或关闭一个就足够了?
finally {
if (session != null && session.isLive()) {
session.logout();
}
if (resourceResolver != null && resourceResolver.isLive()) {
resourceResolver.close();
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题是关于"我们应该关闭两者"而不是首先关闭的问题
当您调用方法时,ResourceResolver
将关闭底层证券.Session
ResourceResolver.close()
如果您使用较新版本的Sling,我会建议您在使用try-with-resource
时使用该构造ResourceResolver
:
try (final ResourceResolver resolver = this.getResourceResolver()) {
[... use resolver here ...]
}
Run Code Online (Sandbox Code Playgroud)
由于ResourceResolver
实现了AutoClosable
它可以使用的接口try-with-resource
.这将始终关闭ResourceResolver
,您将不必处理异常等.
请注意,您只能使用ResourceResolver
您创建的s 执行此操作.如果您使用ResourceResolver
从中获得的Resource
,例如,您不应该关闭它.被认为是最佳实践,只有创建ResourceResolver
它的人应该关闭它.
归档时间: |
|
查看次数: |
1401 次 |
最近记录: |