0
대화 범위가있는 CDI 빈을 사용하고 있습니다. 는이 같은 내 콩의 액션 메소드에서 새 대화를 시작 @ConversationScoped Beans - 대화 ID가 고유하지 않습니까?
if (conversation.isTransient()) {
conversation.begin();
logger.fine("start new conversation, id=" + conversation.getId());
}
는 지금은 CDI에 의해 주어진 ID를 등 '1'또는 '2'와 같은 간단한 작은 숫자는 것을 인정했다. 몇 가지 테스트를 거친 끝에 동일한 ID가 붙은 다른 브라우저 세션을 시작할 수있었습니다. 예를 들어 두 브라우저 모두 ID '1'을 요구합니다. 그리고 대화 중에 충돌이 발생합니다.
이 동작이 정상적인 지 궁금합니다 (Wildfly에서 실행 중입니까)?
나만의 고유 ID를 부여하여 대화를 시작해야합니까?
if (conversation.isTransient()) {
conversation.begin(UUID.randomUUID().toString());
logger.fine("start new conversation, id=" + conversation.getId());
}
업데이트 : Siliarus의 주석으로 , ID가 브라우저 세션에서 고유합니다. 같은 CID를 사용하는 두 가지 다른 브라우저 세션에서의 충돌에 대한 내 자신의 관찰은 잘못되었습니다. 나 자신이 고유 ID를 작성할 필요가 없습니다.
"대화 중에 충돌이 발생합니다."에 대해 자세히 설명하십시오. 다른 브라우저 세션을 작성하면 CDI에서 새 세션이 트리거됩니다. 그래서 당신은 같은 대화 ID를 가지지 만 각각이 다른 세션에 속할 수 있습니다 (두 세션을 모두 살아 있다고 가정 할 때). 그건 내가 생각하는 갈등을 일으키면 안된다. 그것은 나에게 오는 단지 첫 번째 생각이다. – Siliarus
예 - 당신 말이 맞습니다. 나는 이드가 세션에서 유일하다는 것을 알아 냈고 이것이 문제가 될 것이라고 생각하는 것은 내 잘못이었다. – Ralph