В моем приложении я настраивал локаль, когда пользователь входит в систему, чтобы локализовать компоненты.Недавно я давал демонстрацию и заметил, что язык переключается с английского на голландский без видимой причины.Оказалось, что к демонстрационному серверу (расположенному на немецком сервере) одновременно обращался другой человек, который установил его на голландский и влиял на мою английскую демоверсию и наоборот.
Я попробовал на своем компьютере разные браузеры, используя нормальный режим Chrome и режимы инкогнито и т. Д. Для имитации различных сеансов, и проблема присутствует.Любые идеи о том, как справиться / исправить это?Я думал, что Vaadin уже обрабатывал пользовательские сессии самостоятельно, но кажется, что переменные приложения являются общими?
Вот что я делаю в своем приложении, чтобы изменить локаль:
@Override
public void setLocale(Locale locale) {
super.setLocale(locale);
xerb = ResourceBundle.getBundle("com.bluecubs.xinco.messages.XincoMessages", getLocale());
}
Затем xerbпакет ресурсов используется для интернационализации пользовательского интерфейса.Я пытался не делать супер-вызов, но результат тот же, как если бы xerb изменялся различными сеансами и передавался между ними.
Есть идеи?
Тот же вопрос на форуме Ваадина: https://vaadin.com/forum/-/message_boards/view_message/1091312
Редактировать
Используя паттерн ThreadLocal, я добавил выходные данные для каждого полученного экземпляра и вижу разные экземпляры для каждого браузера.(т.е. com.bluecubs.xinco.core.server.vaadin.Xinco@2114ed для первого и com.bluecubs.xinco.core.server.vaadin.Xinco@fd68fe для второго браузера), поэтому я считаю, что модель используется правильно,К сожалению, я все еще вижу ту же проблему.