繁体   English   中英

@SessionScoped / @Stateful-他们如何管理会话/状态

[英]@SessionScoped / @Stateful - how do they managed session/state

我是Java EE的新手。 我正在研究CDI和EJB材料,并遇到了@SessionScoped和@Stateful批注。

查看定义:@SessionScope:维护跨多个HTTP请求的用户与Web应用程序的交互。

@Statfeful:看起来与@SessionScope具有相同的功能

所以这是我的疑问:

1)它们两者的作用相同吗? 2)我对Node和Python有一些经验。 在那些用于维护客户端状态的语言中,我始终使用与HTTPSession对象绑定的cookie,该cookie进一步与内存缓存(redis / memcache)绑定,以便在所有服务器之间进行分发。

所以我也可以在这里使用相同的技术...对吗? 那为什么要使用这些符号呢? 另外,如果我打算使用它们,那么如何使它们分布在所有服务器上? 我的意思是,来自客户端的请求可以到达server1,然后下一个请求可以到达server2 ..在这种情况下,如果未分发此SesssionScoped对象,那么事情将如何正常工作?

这些注释的目的是什么?

不,它们并不相同,但是可以一起使用。

@SessionScoped将对象绑定到HTTP会话。 @Stateful Session Bean仅表示可以通过单个调用者的调用来维护其状态。 有状态会话Bean来自繁重的客户端应用程序,在这些应用程序中,Java SE程序可以在远程服务器上查找EJB来工作。 这些类型的客户端/服务器应用程序可以使用有状态EJB在服务器上维护一定数量的会话状态,而无需HTTP(它们在应用程序服务器上使用RMI-IIOP,CORBA等协议)。

如今,您可以继续将状态会话Bean与HTTP会话一起使用。

与队友通了话后,我想我可能会回答我的问题。

在粘性会话的情况下,可以利用sessionScope或有状态。 粘性和非粘性会话

在这种情况下,用户会话仅停留在一个框上,而不会分布在所有框上。 但是,如果我们不使用粘性会话,那么这些注释几乎没有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM