无需浏览器即可以编程方式保持HTTP Session Alive

时间:2011-10-04 02:18:05

标签: java http session java-ee

对于我们的一个要求,我在使用HTTP协议的两台服务器之间进行通信。交互是长时间运行的,用户可能不会在很长的时间间隔内与其他站点进行交互。

当他们来到页面时,登录到远程站点。每当用户尝试与远程站点交互时,我在内部进行HTTP调用(基于sessionId进行验证)。

我想知道是否有办法刷新会话并确保它不会过期。

根据我的有限理解,浏览器通过在标头或cookie中传递keep-alive来处理此问题(我完全不了解)。任何人都可以在Java中建议采用编程方式来实现保持活动的行为

3 个答案:

答案 0 :(得分:10)

1。

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

如果部署描述符(DD)中的代码,只需粘贴此部分即可 如果您希望在特定的持续时间内保持会话活动,请将-1替换为任何正数值 此处指定的时间以分钟为单位

<强> 2

如果要更改特定会话实例的会话超时值,而不影响应用程序中任何其他会话的超时长度:

session.setMaxInactiveInterval(30*60);


** * ** * ** * 的** * ** * ** * ** * *
注意:

1.在DD中,指定的时间为分钟 2.如果以编程方式执行,指定的时间为

希望这会有所帮助:)

答案 1 :(得分:1)

我想下面的代码可以帮助你,如果你可以传递JSESSIONID cookie,那么你的容器将负责保持会话活着,如果它可能是从其他浏览器创建的相同会话。

找到下面的链接,解释了很多。

Click Here

上面链接中的代码段

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

答案 2 :(得分:0)

查看Apache HttpClient并查看its tutorial。 HttpClient支持保持活动标头和其他功能,使您能够以编程方式进行HTTP调用。