Программно поддерживать HTTP Session Alive без браузера - PullRequest
11 голосов
/ 04 октября 2011

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

Когда они попадают на страницу, войдите на удаленный сайт.Каждый раз, когда пользователь пытался взаимодействовать с удаленным сайтом, внутренне я делаю HTTP-вызов (аутентификация выполняется на основе sessionId).

Мне было интересно, есть ли способ также обновить сеанс и убедиться, что он не истекает.

Согласно моему ограниченному пониманию, браузер обрабатывает это, передавая keep-alive в заголовке илипеченье (которое я не понимаю полностью).Может кто-нибудь предложить программный способ в Java для достижения поддержания активности

Ответы [ 3 ]

10 голосов
/ 04 октября 2011

1.

 <session-config>
         <session-timeout>-1</session-timeout>
 </session-config>

Просто вставьте этот фрагмент, если код в дескрипторе развертывания (DD).
Если вы хотите сохранить сеанс в течение определенной продолжительностивремя замените -1 на любое положительное числовое значение.
Здесь указано время в минутах.

2.

Если вы хотитеизменить значение времени ожидания сеанса для конкретного экземпляра сеанса, не влияя на продолжительность времени ожидания любого другого сеанса в приложении:

session.setMaxInactiveInterval(30*60);


**********************
Примечание:

1.In DD, указанное времянаходится в минутах .
2.Если вы делаете это программно, указанное время находится в секундах .

Надеюсь, это поможет:)

1 голос
/ 19 августа 2015

Полагаю, что приведенный ниже код может помочь вам, если вы можете передать cookie JSESSIONID, тогда ваш контейнер возьмет на себя ответственность за поддержание сеанса, если тот же сеанс может быть создан из другого браузера

найдите ссылку ниже, которая многое объяснила.

Нажмите здесь

Фрагмент кода по ссылке выше

    BasicCookieStore cookieStore = new BasicCookieStore();
    BasicClientCookie cookie = new BasicClientCookie("JSESSIONID", "97E3D1012B3802114FA0A844EDE7B2ED");
    cookie.setDomain("localhost");
    cookie.setPath("/CookieTest");
    cookieStore.addCookie(cookie);
    HttpClient client = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();

    final HttpGet request = new HttpGet("http://localhost:1234/CookieTest/CookieTester");

    HttpResponse response = client.execute(request);
0 голосов
/ 04 октября 2011

Взгляните на Apache HttpClient и посмотрите его учебник .HttpClient поддерживает поддержку заголовков и других функций, которые должны позволять вам программно выполнять HTTP-вызов.

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