[英]Programmatically keep HTTP Session Alive without browser
对于我们的一个要求,我在使用HTTP协议的两台服务器之间进行通信。 交互是长时间运行的,用户可能不会在很长的时间间隔内与其他站点进行交互。
当他们来到页面时,登录到远程站点。 每当用户尝试与远程站点交互时,我在内部进行HTTP调用(基于sessionId进行验证)。
我想知道是否有办法刷新会话并确保它不会过期。
根据我的有限理解,浏览器通过在标头或cookie中传递keep-alive来处理这个问题(我完全不了解)。 任何人都可以建议使用Java编程方式来实现保持活动的行为
1。
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
如果代码在部署描述符(DD)中,则只需粘贴此部分。
如果要在特定的持续时间内保持会话处于活动状态,请将-1替换为任何正数值。
此处指定的时间以分钟为单位。
2。
如果要更改特定会话实例的会话超时值,而不影响应用程序中任何其他会话的超时长度:
session.setMaxInactiveInterval(30*60);
** * ** * ** * ** * ** * ** * ** * *
注意 :
1.在DD中,指定的时间以分钟为单位 。
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);
看一下Apache HttpClient并查看它的教程 。 HttpClient支持保持活动标头和其他功能,使您能够以编程方式进行HTTP调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.