osgi - 我应该在关闭资源解析器之前关闭 session 吗

标签 osgi jcr sling

我有简单的服务,让我们使用resourceResolver和 session 来实现一些逻辑:

@Component(immediate = true)
@Service(value = ServiceInterface.class)
public class ServiceInterfaceImpl implements ServiceInterface {

     //Some fields

     @Reference
     private ResourceResolverFactory resolverFactory;


     private void someMethod() {
          ResourceResolver resourceResolver = null;              
          try {
               resourceResolver = resolverFactory.getServiceResourceResolver(null);
               Session session = resourceResolver.adaptTo(Session.class)
               someMethod2(resourceResolver);
               someMethod3(session);
          } catch (LoginException e) {
              log.error(e.getMessage(), e);
          } finally {
              if (resourceResolver != null && resourceResolver.isLive()) {
                  resourceResolver.close();
              }
          }
     }

     //Some implementation
 }

我应该关闭 session ,还是会在 resourceResolver.close() 中自动关闭?

最佳答案

当您关闭ResourceResolver时, session 将自动关闭,因此resourceResolver.close()就足够了。您可以深入研究代码以找到发生这种情况的位置。如果您获得 session repo.loginAdministrative(),您应该在最后注销该 session ,但这不是获得 jcr session 的推荐方法。

关于osgi - 我应该在关闭资源解析器之前关闭 session 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37880336/

相关文章:

java - 如何在 apache karaf 中安装和运行 osgi bundle

java - Eclipse 即时检测外部文件更改

architecture - Java CMS 项目

java - 是否可以使用Alfresco作为JCR框架?

java - 如何构建 Apache Sling 9

jackrabbit - Sling 初始内容加载 - 如何设置访问权限?

java - OSGi 声明式服务 (ds) 使用

dependency-injection - bundle 中的蓝图依赖注入(inject)

java - 使用 modeshape 在 JCR 存储库中递归移动节点

servlets - 在 CQ5 中访问 Sling Servlet