Servlets 创建无状态EJB2.1bean的远程接口并将其存储在每个用户的HTTP会话中?

Servlets 创建无状态EJB2.1bean的远程接口并将其存储在每个用户的HTTP会话中?,servlets,jakarta-ee,ejb,httpsession,stateless-session-bean,Servlets,Jakarta Ee,Ejb,Httpsession,Stateless Session Bean,我正在开发一个企业应用程序(EJB2.1)。在这个应用程序中,每当用户登录时,它都会创建无状态会话Bean的远程接口,并将其作为属性存储在会话中 这是伪代码: HttpSession httpSession = null; // user's session MyEjb myEjb = null; // Remote interface of EJB // get session of the user httpSession = ...; // create remote interfa

我正在开发一个企业应用程序(EJB2.1)。在这个应用程序中,每当用户登录时,它都会创建无状态会话Bean的远程接口,并将其作为属性存储在会话中

这是伪代码:

HttpSession httpSession = null; // user's session
MyEjb myEjb = null; // Remote interface of EJB


// get session of the user
httpSession = ...;

// create remote interface of EJB
myEjb = ...;

// store remote interface of EJB in Session as an attribute
httpSession.setAttribute("MyEjb", myEjb);
然后,对于每个EJB调用,它首先从会话获取远程接口,然后使用它

HttpSession httpSession = null; // user's session
MyEjb myEjb = null; // Remote interface of EJB


// get session of the user
httpSession = ...;

// get remote interface of EJB from session 
myEjb = (MyEjb) httpSession.getAttribute("MyEjb");

// use the EJB
使用这种方法的利弊是什么?这有意义吗?
谢谢

你为什么要这样做?我没有这样做。这是一个现有的应用程序,用这种方式编写代码的程序员已经不在这家公司工作了。我试图找出他们这样做的原因。我看不出有任何必要(甚至有用)这样做的原因:SLSB是在启动时汇集在一起的(因此,通过坚持特定实例不会获得性能提升)在客户请求时由容器分发——最好是挂在特定实例上,这意味着您正在扩大会话的规模;在最坏的情况下,您会导致容器实例化更多bean以满足其他客户机/会话。