繁体   English   中英

将无状态bean封装在有状态会话中

[英]Encapsulating stateless beans inside a stateful session

我有一个使用EJB的Java EE应用程序,并通过无状态EJB执行大多数功能。

我要求所有用户也都有一个活跃的会话,我想知道使用bean的最佳方法是什么。

当前,我有一个命令行客户端,除了使用有状态Bean登录系统之外,它还直接使用无状态Bean。

我想知道是否应该让客户端通过有状态Bean执行所有功能,这样除非存在活动会话,否则无法执行任何功能。
就我个人而言,这更有意义。

我只是不太确定哪种设计是“正确的”或什么是更好的设计。
如果我继续让客户端使用无状态Bean,则必须为这些无状态Bean提供一种方法来检查客户端是否具有活动会话。

即使您仅调用无状态Bean,会话也仍然存在。 是否调用无状态或有状态Bean的选择仅应在是否需要在方法调用之间保持状态的情况下进行。 尝试注入SessionContext并注意会有一个委托人,即使它是匿名的也是如此。

如果您的要求是经过身份验证的用户,那么无状态会话bean可以:

  • 您可以在EJB中调用SessionContext.getCallerPrincipal() (用于记录等)。
  • 您可以声明性地施加授权(在EJB方法上使用@RolesAllowed批注)

因此我看不出有理由切换到有状态会话Bean的原因。 可能不相关,但是有状态会话Bean会消耗服务器端的资源,因此应该有充分的理由这样做。

相关问题何时在无状态会话Bean上使用有状态会话Bean? 没有收到任何答案到今天为止,我认为在这种情况下没有答案的 一个答案为好

暂无
暂无

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

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