[英]Encapsulating stateless beans inside a stateful session
我有一个使用EJB的Java EE应用程序,并通过无状态EJB执行大多数功能。
我要求所有用户也都有一个活跃的会话,我想知道使用bean的最佳方法是什么。
当前,我有一个命令行客户端,除了使用有状态Bean登录系统之外,它还直接使用无状态Bean。
我想知道是否应该让客户端通过有状态Bean执行所有功能,这样除非存在活动会话,否则无法执行任何功能。
就我个人而言,这更有意义。
我只是不太确定哪种设计是“正确的”或什么是更好的设计。
如果我继续让客户端使用无状态Bean,则必须为这些无状态Bean提供一种方法来检查客户端是否具有活动会话。
即使您仅调用无状态Bean,会话也仍然存在。 是否调用无状态或有状态Bean的选择仅应在是否需要在方法调用之间保持状态的情况下进行。 尝试注入SessionContext
并注意会有一个委托人,即使它是匿名的也是如此。
如果您的要求是经过身份验证的用户,那么无状态会话bean可以:
SessionContext.getCallerPrincipal()
(用于记录等)。 @RolesAllowed
批注) 因此我看不出有理由切换到有状态会话Bean的原因。 可能不相关,但是有状态会话Bean会消耗服务器端的资源,因此应该有充分的理由这样做。
相关问题何时在无状态会话Bean上使用有状态会话Bean? 没有收到任何答案到今天为止,我认为在这种情况下没有答案的 一个答案为好 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.