создайте свой собственный идентификатор сеанса в приложении struts2 или j2ee

У меня есть приложение, использующее Struts2 jsp, и java..sessionid создается контейнером. Я хочу создать свой собственный идентификатор сеанса и установить его для этого конкретного сеанса... просто хочу перезаписать. Я также создал фильтр. идентификатор сеанса. любая подсказка

что-то типа

сеанс.setSessionId()

Спасибо..


person user1126046    schedule 16.04.2012    source источник
comment
Каков ваш вариант использования? Что вы пытаетесь сделать и почему?   -  person Dave Newton    schedule 16.04.2012


Ответы (1)


Это можно сделать с помощью CookieInterceptor., который может реализовать CookiesAware, а затем перехватить вызов, чтобы установить собственный идентификатор сеанса.

Редактировать:

Только что понял, что CookieInterceptor не позволяет вам устанавливать cookie, поэтому я сделал что-то вроде этого

В моем методе выполнения моего Action я сделал это:

public String execute() {
        String jSessionId = null;
        for (Cookie c : httpServletRequest.getCookies()) {
            if (c.getName().equals("JSESSIONID"))
                jSessionId = c.getValue();
        }
        System.out.println("Value Found In Request = " + jSessionId);
        jSessionId = "TestingOverrideOfJSessionId";
        Cookie myCookie = new Cookie("JSESSIONID", jSessionId);
        myCookie.setMaxAge(60 * 60 * 24 * 365); // Make the cookie last a year
        httpServletResponse.addCookie(myCookie);

        return SUCCESS;
    }

Результат

Переопределение идентификатора сеанса

person mprabhat    schedule 16.04.2012
comment
не могли бы вы дать фрагмент кода? Кстати, идентификатор сеанса генерируется контейнером, а не файлами cookie .... Пожалуйста, уточните - person user1126046; 16.04.2012
comment
У меня сейчас нет времени, но я проверю это из дома. - person mprabhat; 16.04.2012
comment
спасибо .... еще кое-что, как мы можем обнаружить тот же URL-адрес на другой открытой вкладке, чтобы я мог выйти на первый сеанс. - person user1126046; 17.04.2012
comment
это сложно, вам придется где-то хранить идентификатор jSession, поэтому, если пользователь откроет другую вкладку и откроет тот же URL-адрес, вы получите идентификатор jSession, проверьте, не используется ли уже этот идентификатор, если да, то выйдите из другого сеанса. Но делать это вслепую нельзя, нужно видеть, какое действие пытается вызвать пользователь, так как не для всех действий это можно сделать. Это большой функционал сам по себе - person mprabhat; 18.04.2012