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的用户凭据,但它本身不可序列化。