像普通类一样实例化 ejb



我正在开发一个Java Web应用程序。

我有这个类:

@Stateless
public class A {
void makeSomething();
}

现在我在另一个类中调用这个类(我有两种方法):

@Stateless
public class B {
Method 1:
A a =new A();
a.makeSomething();
Method 2:
A a =new A();
a.makeSomething();
or

@EJB 
A a;
Method 1:
a.makeSomething();
Method 2:
a.makeSomething();
 }

我的 Web 应用程序有很多请求。在并发世界中,实例化类 A 的最佳方法是什么?

最好的方法是使用@EJB注释。容器将注入和管理您的实例。容器将创建一个实例池,并在请求之间进行管理,这是一个很好的做法!它不会为每个请求创建一个新实例)

这不是并发性的问题。如果它是一个 EJB,那么用构造函数实例化它是没有意义的。如果您打算这样做,请将其设置为常规POJO。

你明白拥有 EJB 而不是普通 POJO 意味着什么吗?

如果您的类位于 EJB Bean 中,它将由 EJB 容器管理。
虽然你不应该通过调用它的构造函数手动创建它,但你应该让容器做 Bean 的实例化。这就是您应该通过@EJB注释注入它的方式。

最新更新