Java Spring MVC、@SessionAttribute和可扩展性
我们正在为80000名用户构建一个SpringMVCWeb应用程序 我在petclinic示例中看到许多控制器使用:Java Spring MVC、@SessionAttribute和可扩展性,java,spring-mvc,Java,Spring Mvc,我们正在为80000名用户构建一个SpringMVCWeb应用程序 我在petclinic示例中看到许多控制器使用: @SessionAttribute注释和 SessionStatus状态。。。status.setComplete()存储bean并从HTTP会话中删除。确实非常有用 如果你计划为8万用户构建一个应用程序,这是最好的方法吗? 如果您计划以这种方式存储所有表单数据,是否仍然可以使用会话负载平衡和会话故障切换?它可能无法满足您的需要,否。内置实现存在两个主要问题: 它不支持标签浏览。
@SessionAttribute
注释和
SessionStatus状态。。。status.setComplete()
存储bean并从HTTP会话中删除。确实非常有用
如果你计划为8万用户构建一个应用程序,这是最好的方法吗?
如果您计划以这种方式存储所有表单数据,是否仍然可以使用会话负载平衡和会话故障切换?它可能无法满足您的需要,否。内置实现存在两个主要问题:
setComplete()
调用将丢失,对象将无限期地挂起,直到会话过期并被清除org.springframework.web.bind.support.SessionAttributeStore
是公认的扩展点!您可以提供任何您喜欢的实现,并将其注入到DispatcherServlet中。如果希望避免业务对象使信息膨胀,甚至不需要使用Web会话来存储信息。例如,您可以将实际存储放在后端terracotta集群中,而不必担心它是否与您的集群策略兼容
--
如果您真的需要真正的可伸缩性,那么总会有Gamma选项:将其重新设计成一种RESTful策略,它首先不依赖服务器端状态:)因此,与此实现相关的内存占用和并发性问题可能会损害可伸缩性。谢谢你的宝贵意见。对于带有spring实现的选项Gamma:)您有好的指针吗?