Программно поддерживать HTTP Session Alive без браузера

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

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

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

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

Ответ 1

1.

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

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

2.

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

session.setMaxInactiveInterval(30*60);


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

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

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

Ответ 2

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

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

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

фрагмент кода из ссылки выше

    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);

Ответ 3

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