服务器端共享会话的场景是什么?在JAVA EE平台中有没有一些方法可以在服务器端共享会话?服务器端共享会话的场景是什么?
回答
由于问题没有明确说这之间的会话需要共享的对象,我可以建议以下选项:
1)如果您需要在同一台服务器上共享不同Web应用程序之间的会话(Tomcat)的,您可以使用:
<Host name="localhost" ...>
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
</Host>
2)如果服务器不是tomcat,请参考相应服务器的SSO选项。 3)您也可以使用完全成熟的SSO产品,如CAS(http://www.jasig.org/cas),这将允许您跨应用程序在不同服务器之间但不在用户之间共享会话。 4)如果你需要在不同的用户之间共享会话,你需要做的就是根据你的共享标准在不同的客户端(通常是浏览器)之间传递会话ID,比如玩同一个游戏的人,访问同一个公告板并可以协作地改变数据。但是,请理解大部分安全基础结构是围绕会话ID映射构建的。如果您选择在多个用户之间显式访问会话ID,则必须自己重新创建大量安全筛选器。
5)或者,最好的方法是以不同于会话的方式管理对象的状态。共享对象的状态可以在多个会话中以更符合标准的安全和可审计的方式共享。
在Java EE上,您必须查看Servlet规范,对象HttpSession提供用于管理服务器端会话的行为。
http://docs.oracle.com/javaee/5/tutorial/doc/bnagm.html
虽然可以存储在会话中的任何物体,这种做法可能是危险的,因为对象保持会话直到它过期或对象被删除,所以如果你的程序没有管好对象存储在会话中的消息可以消耗到许多堆内存中。
会话的对象在到期时被删除,到期时间在部署描述符web.xml中配置或可由客户端设置。如果您未指定会话过期时间,则默认值为30分钟,这30分钟是从用户最后一次请求开始计算的。
我的建议是,你不会在会话中存储对象,你必须使用对象HttpServletRequest和mehtos的setAttribute和getAttribute作为请求之间的传递对象。我需要在会话中存储价值,您可以存储产品的ID而不是整个产品。会话的一个常见用途是存储变量,它们必须超出请求才能存活,并且出于安全原因,您不希望将其存储在cock中。
感谢您的回复,但似乎你的答案不是我的问题的答案,你只是添加一些关于使用会话的评论/实践,我想。 – 2013-03-20 06:09:35
你能对你的问题更具体吗? – 2013-03-20 06:29:02
- 1. 状态服务器不共享会话的IIS 7.5服务器场
- 2. 在rails服务器和php服务器之间共享会话
- 3. 共享会话使用会话状态服务器
- 4. Web服务中的会话共享
- 5. WCF服务之间的共享会话
- 6. 在具有经典ASP的Web服务器场中进行会话共享
- 7. 共享不同场景的两个场景将不会延续
- 8. 服务器端JavaScript会话
- 9. express.js,passports.js:为什么共享会话?
- 10. Vuex - 共享服务器端状态?
- 11. red5服务器端共享对象
- 12. Flash服务器端共享对象-LSOs
- 13. java服务器客户端共享主
- 14. 访问服务器端共享变量
- 15. 会话在同一服务器上的多个域上共享
- 16. 在同一台服务器上的域之间共享会话
- 17. 与Symfony 2.8在ovh共享服务器上丢失的会话
- 18. 2台服务器之间的共享会话
- 19. Node.js - 如何在http服务器和网络服务器之间共享会话?
- 20. 共享会话
- 21. 共享会话
- 22. 什么是场景?
- 23. 如何在nodejs中跨服务器共享会话?
- 24. 与erlang服务器共享导轨会话
- 25. Amazon EC2多个服务器共享会话状态
- 26. Node.js Express - 在不同服务器上共享Passport会话
- 27. localhost在Windows终端服务服务器中的含义是什么?机器还是会话?
- 28. 跨多个客户端服务器请求和多个服务器之间共享会话
- 29. 分享facebook会话令牌从客户端到服务器
- 30. CGI ::客户端之间的会话共享会话!
我知道SSO只是避免多次登录到同一个安全领域,它不会共享会话。根据定义,JEE标准指定会话在Web应用程序之间是隔离的,但Websphere具有用于启用会话共享的非标准配置。 – 2013-03-20 22:58:56