java - EJB 中@Stateless 相对于@Singleton 的真实用例是什么

标签 java singleton ejb

如果我正确理解 EJB,@Singleton 实际上与普通 Java 中的 Singleton 以及 spring 中的单例相同 -> 一个实例,每个调用同时通过同一个实例。 @Stateless 声明一个 bean,它可以(但不能)有多个实例,但限制是同一时间只能有一个调用在一个实例中。对吗? 这仍然是我对 servlet 编程模型的看法:理论上 servlet 容器允许制作 servlet 的多个副本,实际上我还没有看到任何 servlet 容器这样做。 因此,假设我的代码中没有真正有限的资源,如门、窗或打印机(如果我有,我仍然可以用队列和其他东西解决它),真实的例子是什么,@Stateless 的使用优于使用@单例。

问候 莱昂

最佳答案

您可以拥有一个无状态 bean 的多个实例以增加吞吐量。

另一方面,只有一个单例实例。这样做的原因通常是在应用程序范围内共享状态、序列化对资源的访问等,这意味着锁定或同步。

所以如果你真的没有单例,那么使用无状态 bean。

如果你有一个“无状态单例”,没有区别。但是如果你读到“singleton”,按照惯例它有特殊的含义(=必须有使用单例模式的原因)。

关于java - EJB 中@Stateless 相对于@Singleton 的真实用例是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115533/

相关文章:

ios - 重新创建一个单例

c# - 如何处理 OO 应用程序中的横切关注点?使用单例?依赖注入(inject)?什么?

用于创建 EJB stub 的 Eclipse Kepler 'Prepare for Deployment' 选项

java - 除了 SB 接口(interface)之外, session Bean 还可以实现其他接口(interface)吗?

javax.naming.NameNotFoundException :Name [org. wso2.carbon.custom.ejb-1.0-SNAPSHOT/HelloBean] 未在此上下文中绑定(bind)。无法找到 [ejb:]

java - 纯 Java MyBatis 映射器?

java - 为什么我的 java if 语句不起作用并给我这个错误 : "bad operand types for binary operator ' & &'"?

java - 只读 double 不起作用

javascript - 模块模式与匿名构造函数的实例

Java 垃圾收集资格