JCR에서 작동하는 osgi 구성 요소 (예 : CRUD)가 있습니다.Sling/Jackrabbit - 해결 자/세션 수명 및 동시 일관성
@Component
@Service
public class SomeServiceImpl implements SomeService {
@Reference
private ResourceResolverFactory resourceResolverFactory;
private ResourceResolver resourceResolver;
@Activate
private void init() {
resourceResolver = resourceResolverFactory.getServiceResourceResolver(
Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, "myService"));
}
@Override
public void serve() {
//does something with resourceResolver
}
@Deactivate
private void dispose() {
resourceResolver.close();
}
}
이 서비스가 활성 상태 인 동안 resourceResolver의 새 인스턴스가 만들어지고 유지됩니다. 때때로이 서비스는 외부에서 호출됩니다.
내 질문은 : 내가 한 번 resourceResolver를 생성하고 재사용 올바른 접근 방식은
- 인가? 끊임없이 그렇습니까?
- 기본 세션이 만료되지 않는다는 보장이 있습니까?
- By the way resourceResolver와 세션의 수명은 어디에서 볼 수 있습니까?
- 동시성은 어떻습니까? 이 서비스가 병렬로 서버 위치에서 호출된다고 상상해보십시오. Jackrabbit이 일관성을 보장합니까?
@Component
@Service
public class SomeServiceImpl implements SomeService {
@Reference
private SlingRepository slingRepository;
private Session session;
@Activate
private void init() {
session = slingRepository.login();
}
@Override
public void serve() {
//does something with session
}
@Deactivate
private void dispose() {
session.logout();
}
}
(세션 구현) 다른 서비스에 대한 같은 질문
.
가능한 경우 몇 가지 교정본을 보는 것이 좋습니다. 어쩌면 문서들 ...
고마워.
많은 의견을 보내 주셔서 감사합니다. – Alex
나는 "AEM이 잠시 후 닫히지 않은 세션을 수집 중입니다."라는 정보를 찾을 수 있습니다. 이 기사 (http://tech.ethomasjoseph.com/2015/09/sling-who-is-closing-my-jcr-session.html)에서는 ResourceResolver의 기본 JCR 세션을 닫을 때 ResourceResolver 오브젝트는 수집 된 가비지입니다. AEM에 실제 작업이 있다는 것을 의미합니까? 일정 기간 동안 닫히지 않은 세션이 닫히거나 기사 동작에서 언급 되었습니까? – Alex
"AEM이 잠시 후 닫히지 않은 세션을 수집 중입니다."에 대한 참조가 있습니까? ? 제품에서 이러한 기능을 인식하지 못했습니다. –