在无状态 ejb 中使用静态方法有意义吗?

dem*_*onz 3 java-ee-6 ejb-3.1

Statele ejb 旨在实现幂等并且不记忆以前的用户交互。对我来说,这听起来像是一个静态方法。

所以而不是有

 public void save(Entity e) { em.persist(e); }
Run Code Online (Sandbox Code Playgroud)

安全吗

 public static void save(Entity e) { em.persist(e); }
Run Code Online (Sandbox Code Playgroud)

在 EJB 内?

Tom*_*icz 5

不,因为静态方法不参与容器管理的事务、AOP、安全性等。顺便说一句,您的第二个示例将无法编译,em是由应用程序服务器注入的,并且它不能是静态的(?)

此外,没有这样的要求:无状态 EJB 应该是幂等的并且没有状态(尽管名称如此)。更不用说一旦开始使用static方法,您就根本不需要 EJB...