我有简单的服务,让我们使用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/