2016-09-23 2 views
0

Я использую компонент CDI с разницей в разговоре. я начинаю новый разговор в способе действия моего боба, как это:@ConversationScoped Beans - идентификатор конверсии не уникален?

if (conversation.isTransient()) { 
     conversation.begin(); 
     logger.fine("start new conversation, id=" + conversation.getId()); 
    } 

Теперь я узнал, что идентификаторы, предоставленные КДИ простые маленькие номера, как «1» или «2» и так далее. Я смог после некоторого тестирования начать различные сеансы браузера, которые получили в конце один и тот же идентификатор. Поэтому оба браузера утверждают, что идентификатор «1», например. И это приводит к конфликту во время разговора.

Интересно, нормально ли это поведение (я работаю в Wildfly)?

Должен ли я начать свой разговор, дав себе уникальный идентификатор?

if (conversation.isTransient()) { 
     conversation.begin(UUID.randomUUID().toString()); 
     logger.fine("start new conversation, id=" + conversation.getId()); 
    } 

Обновление: Как Siliarus комментарий, идентификатор уникален в сеансе браузера. Мое собственное наблюдение за конфликтом в двух разных сеансах браузера с использованием того же CID было неправильным. Нет необходимости создавать уникальный идентификатор самостоятельно.

+0

Просьба уточнить, «И это приводит к конфликту во время разговора». Создание другого сеанса браузера вызовет новый сеанс внутри CDI. Таким образом, вы можете иметь одинаковые идентификаторы сеанса, но каждый из них относится к другому сеансу (при условии, что вы сохраняете оба сеанса активными). Думаю, это не должно вызывать конфликтов. Это всего лишь первая мысль, которая приходит ко мне. – Siliarus

+0

Да, вы правы. Я понял, что идентификатор уникален в сеансе, и я был виноват в том, что это будет проблемой. – Ralph

ответ

0

Как комментарий Siliarus, идентификатор может быть одинаковым в URL-адресе браузера, но идентификатор уникален внутри сеанса. Таким образом, конфликта нет, и нет необходимости генерировать уникальный идентификатор вручную.

Смежные вопросы