使用Tomcat/Scala保持状态的最佳方法?

使用Tomcat/Scala保持状态的最佳方法?,tomcat,scala,persistence,state,Tomcat,Scala,Persistence,State,使用Tomcat/Scala保持用户状态的最佳方法是什么?我的第一个想法是在会话中始终保留帐户信息,如果会话中没有帐户信息,则将用户重定向到登录页面。这是一种可行的模式,还是有一种更智能的方式来保存用户信息?我正在尝试复制一个基本的购物车网站,我现在正在思考这个问题。有很多方法可以剥这只猫的皮。您可以在会话中存储信息,前提是您的对象足够轻(并且您的通信量足够低)。这可能是最简单的解决方案,但在需要扩展或集群时可能会遇到困难 根据经验,Tomcat的扩展、集群、db会话存储等对我来说不是很好 另一

使用Tomcat/Scala保持用户状态的最佳方法是什么?我的第一个想法是在会话中始终保留帐户信息,如果会话中没有帐户信息,则将用户重定向到登录页面。这是一种可行的模式,还是有一种更智能的方式来保存用户信息?我正在尝试复制一个基本的购物车网站,我现在正在思考这个问题。

有很多方法可以剥这只猫的皮。您可以在会话中存储信息,前提是您的对象足够轻(并且您的通信量足够低)。这可能是最简单的解决方案,但在需要扩展或集群时可能会遇到困难

根据经验,Tomcat的扩展、集群、db会话存储等对我来说不是很好

另一种方法是使用cookie管理您自己的令牌。然后将给定用户令牌的实际信息存储在服务器上。最简单的实现就是有一个内存映射,但它的缺点是重启应用程序时会丢失所有数据

您可以将信息持久化到数据库,并在每个请求上使用用户令牌进行查找(可能使用一些缓存策略)。这还允许您扩展到多个应用程序服务器,而无需过多地关注集群—每个实例只需查找用户令牌并在共享数据库上执行查找请求

如果您将实际的实现包装在一个漂亮的接口后面,那么您可以从简单/廉价的会话解决方案开始,如果以后需要的话,可以逐渐转向更复杂的实现。一个警告是,您必须格外小心,不要在第一次实现时将特定于servlet的信息泄漏到接口中