我有一个无状态的SOAP Web服务(Java,Spring,Tomcat)。
我想在每个会话中保留一些全局变量,以便于访问并避免使用静态变量,因为它们将具有容器范围。
我该怎么做?如果只有这样的方法是使用spring bean范围,那么哪个范围是更好的原型或单例范围,为什么?
感谢
答案 0 :(得分:3)
可以使用Spring bean范围。
会话范围
示例:
<bean id="customerService" class="com.customer.services.CustomerService"
scope="session"/>
答案 1 :(得分:2)
(这不是原始问题的答案,但试图回答评论区域的其他一些问题)
会话bean 可能是无状态或有状态。如果它是无状态,它会接受请求,发送响应(可能)并在之后被销毁。 有状态会话存储一些可以重用于其他方法调用的参数( state ) - 就像一个bean,它只是在内部计算它被调用的频率。
同步Web服务可以使用无状态会话bean 实现。它需要一个请求,做一些计算,返回一个响应并完成(bean可以被销毁)。在这种情况下,客户端等待答案,就像调用简单的Java方法一样。
异步Web服务的不同之处:服务收到请求并且
在任何情况下 - 客户端都不会等待响应,而是继续,直到收到响应,因为
异步服务就像启动一个Java线程:你启动它,继续你的工作,在某些时候你得到结果(或通知,结果已经准备好)
异步服务需要某种持久性存储来存储会话ID或回调URL ,而服务会话处于活动状态。 服务会话是有状态的,服务所需的会话bean 可以是无状态。