0

内无状态bean我使用EJB Java EE应用程序,并通过无状态的EJB执行的大部分功能。封装有状态会话

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

目前,我有一个使用无状态豆直接在除了记录与状态Bean系统的命令行客户端。

我不知道我是否应该在客户端通过状态bean执行所有的功能,这样,没有功能可以除非活动会话存在下进行。
这对我个人来说更有意义。

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

+0

为什么你需要一个* stateful *会话bean来记录日志?你的会议还有什么(=需求是什么)? – Beryllium

+0

这是登录,认证。基本上所有的系统功能都是同一个会话的一部分(用户在执行任何功能之前需要先登录) – Antix

回答

0

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

0

如果你的要求是经过认证的用户,一个无状态会话bean是好的:

  • 您可以在EJB调用SessionContext.getCallerPrincipal()(用于日志记录等)
  • 你可以声明征收授权(使用@RolesAllowed EJB方法注释)

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

一个相关的问题When to use Stateful session bean over Stateless session bean?没有收到任何答案到今天为止,我认为没有答案在这种情况下是答案以及