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

时间:2013-08-25 10:14:30

标签: java java-ee ejb-3.1 stateless-session-bean stateful-session-bean

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

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

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

我想知道我是否应该让客户端通过有状态bean执行所有功能,这样就不会执行任何功能,除非存在活动会话。
这对我个人来说更有意义。

我不太确定什么设计是'正确的'或什么是更好的设计 如果我继续让客户端使用无状态bean,那么我将不得不让那些无状态bean检查客户端是否有活动会话。

2 个答案:

答案 0 :(得分:0)

即使您只调用无状态bean,也会存在会话。是否需要在方法调用之间保持状态,是否调用无状态bean或有状态bean的选择应该是唯一的。尝试注入SessionContext并注意会有一个校长,即使它是匿名的。

答案 1 :(得分:0)

如果您的需求是经过身份验证的用户,则无状态会话bean就可以了:

  • 您可以在EJB中调用SessionContext.getCallerPrincipal()(用于记录目的等)
  • 您可以声明性地(使用EJB方法上的@RolesAllowed注释)
  • 强制执行授权

所以我没有理由切换到有状态会话bean。它可能不相关,但有状态会话bean消耗服务器端的资源,因此应该有令人信服的理由这样做。

相关问题When to use Stateful session bean over Stateless session bean?到目前为止尚未收到任何答案,在这种情况下我认为无答案答案