应用程序无状态时的会话 bean
Session bean when the application is stateless
我有一个非常简单的问题:当我的应用程序中有 SESSION
个作用域 bean 时会发生什么,即 STATELESS
?
说来话长。我有后端应用程序,用 Spring Boot
编写,它为 REST API
用 AngularJS
编写的前端服务。我正在使用 JWT
进行身份验证,Spring 安全配置为 STATELESS
。
但我也在使用 WebServiceTemplate
与 SharePoint
进行通信。我负责与 SOAP API
通信的 beans 是 SESSION
作用域 beans,因为它们依赖于用户凭据。很难将 WebServiceTemplate
配置为每次调用都使用不同的凭据,所以我决定在创建时进行配置,然后我的问题就开始了。
一旦您将一些状态存储到会话范围的 bean 中,您的应用程序就会变成有状态的。
如果您需要在请求之间共享状态(在本例中为 SOAP 服务凭据)并希望拥有无状态应用程序(例如,由于您的应用程序集群化),您的选择很少:
- 将该状态存储到数据库中,并可选择将其缓存在服务中。 (如果 SOAP 调用失败,您可以使缓存无效并从数据库中读取新的凭据)
- 使用Spring Session project或一些键值存储来存储会话状态。
我有一个非常简单的问题:当我的应用程序中有 SESSION
个作用域 bean 时会发生什么,即 STATELESS
?
说来话长。我有后端应用程序,用 Spring Boot
编写,它为 REST API
用 AngularJS
编写的前端服务。我正在使用 JWT
进行身份验证,Spring 安全配置为 STATELESS
。
但我也在使用 WebServiceTemplate
与 SharePoint
进行通信。我负责与 SOAP API
通信的 beans 是 SESSION
作用域 beans,因为它们依赖于用户凭据。很难将 WebServiceTemplate
配置为每次调用都使用不同的凭据,所以我决定在创建时进行配置,然后我的问题就开始了。
一旦您将一些状态存储到会话范围的 bean 中,您的应用程序就会变成有状态的。
如果您需要在请求之间共享状态(在本例中为 SOAP 服务凭据)并希望拥有无状态应用程序(例如,由于您的应用程序集群化),您的选择很少:
- 将该状态存储到数据库中,并可选择将其缓存在服务中。 (如果 SOAP 调用失败,您可以使缓存无效并从数据库中读取新的凭据)
- 使用Spring Session project或一些键值存储来存储会话状态。