Web services 应用程序无状态时的会话bean

Web services 应用程序无状态时的会话bean,web-services,session,spring-security,spring-boot,stateless,Web Services,Session,Spring Security,Spring Boot,Stateless,我有一个非常简单的问题:当我的应用程序中有无状态的会话作用域bean时会发生什么 说来话长。我有一个用springboot编写的后端应用程序,它为用AngularJS编写的前端提供restapi。我正在使用JWT进行身份验证过程,Spring安全性被配置为无状态。 但我也在使用WebServiceTemplate与SharePoint进行通信。负责与soapapi通信的bean是SESSION作用域bean,因为它们依赖于用户凭据。很难将WebServiceTemplate配置为对每个调用使用不

我有一个非常简单的问题:当我的应用程序中有
无状态的
会话
作用域bean时会发生什么

说来话长。我有一个用
springboot
编写的后端应用程序,它为用
AngularJS
编写的前端提供
restapi
。我正在使用
JWT
进行身份验证过程,Spring安全性被配置为
无状态

但我也在使用
WebServiceTemplate
SharePoint
进行通信。负责与
soapapi
通信的bean是
SESSION
作用域bean,因为它们依赖于用户凭据。很难将
WebServiceTemplate
配置为对每个调用使用不同的凭据,因此我决定在创建时进行配置,然后问题就开始了。

一旦您将一些状态存储到会话范围的bean中,您的应用程序就会变得有状态

如果您需要在请求之间共享状态(在本例中为SOAP服务凭据),并且希望拥有无状态应用程序(例如,由于您的应用程序的集群),则您只有很少的选项:

  • 将该状态存储到数据库中,并选择性地将其缓存到服务中。(如果SOAP调用失败,您可以使缓存无效并从DB读取新凭据)
  • 使用或某些键值存储来存储会话状态

  • 一旦您将某些状态存储到会话范围的bean中,您的应用程序就会变成有状态的

    如果您需要在请求之间共享状态(在本例中为SOAP服务凭据),并且希望拥有无状态应用程序(例如,由于您的应用程序的集群),则您只有很少的选项:

  • 将该状态存储到数据库中,并选择性地将其缓存到服务中。(如果SOAP调用失败,您可以使缓存无效并从DB读取新凭据)
  • 使用或某些键值存储来存储会话状态

  • 谢谢你的建议。我将采用第二种解决方案。现在我在序列化WebServiceMessageSender对象时遇到了问题。此对象为我存储WebServiceTemplate的用户凭据,但它本身不可序列化。谢谢您的建议。我将采用第二种解决方案。现在我在序列化WebServiceMessageSender对象时遇到了问题。此对象为我存储WebServiceTemplate的用户凭据,但它本身不可序列化。