Обработка многопользовательских сеансов Java Web Application - PullRequest
1 голос
/ 30 сентября 2011

Я только начал изучать Java Web Application (JSF), разрабатываемую несколько дней назад, и до сих пор мне все было ясно. Но теперь у меня есть проблема, и я действительно не знаю, как дальше. Я использую сервер Glassfish 3.1.1 и успешно настроил свою область для групп пользователей.

Хотя вошел только 1 пользователь, все работает нормально, но когда я вхожу с другой учетной записью из другого браузера (или даже с другого компьютера), первый сеанс очищается, а данные последнего зарегистрированного пользователя отображаются в каждые предыдущие сессии.

Извините за мое невежество, может быть, это простой вопрос, но я не знаю, с чего начать. Я использую Netbeans и позволяю ему генерировать мои классы сущностей из базы данных postgreSQL, а затем страницы JSF из сущностей. Я читал о HttpSessions, но не все было ясно для меня. Должен ли я продолжать этот путь, или решение в другом направлении? Если это правильный путь, может кто-нибудь прислать мне пример источника?

Вот мой код:

Login.xhtml:

<h:inputText id="email" size="25" value="#{login.email}" maxlength="30"/>
<h:inputSecret id="password" size="25" value="#{login.password}" maxlength="100"/>
<h:commandLink value="Bejelentkezés" action="#{login.loginAction}"/>

Вот так выглядит мой класс входа в систему:

@ManagedBean(name="login")
@RequestScoped
public class LoginBean
{

private String email;
private String password;

public String loginAction()
{
    HttpServletRequest req=(HttpServletRequest)FacesContext.getCurrentInstance()
            .getExternalContext().getRequest();
    try
    {
        System.out.println("login with: " + email + ", " + password + ".");
        req.login(email, password);
    }
    catch(ServletException e) ....

Любая помощь будет принята с благодарностью!
Заранее спасибо

Атеша

1 Ответ

2 голосов
/ 20 декабря 2011

Код, опубликованный до сих пор, выглядит нормально.

, но когда я вхожу в систему с другой учетной записью из другого браузера (или даже с другого компьютера), первый сеанс очищается иданные о последних вошедших в систему пользователях отображаются во всех предыдущих сеансах.

Эта проблема возникает не в коде, опубликованном до сих пор.Сеанс не должен быть очищен вообще.Это, вероятно, неверное истолкование происходящего.Возможно, вы не понимаете понятие «сессия».Симптомы указывают на то, что вы очевидно овладели вошедшим в систему пользователем в некоторой переменной static или управляемом бине @ApplicationScoped.Убедитесь, что вы этого не делаете.

Относительно того, как работает «сессия», прочитайте это: Как работают сервлеты?Создание экземпляров, сеансы, общие переменные и многопоточность .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...