java - 调用EJB中静态实例的方法

标签 java static ejb instance-variables simultaneous-calls

我猜测我们的代码库中存在错误的代码,但我不确定。所以我们有这样的 EJB:

@Stateless
public class MyEjb {
  private static Something sg = new Something();
  public void doSomething() {
    sg.execute();
  }
}

Something 类是一个普通类:

public class Something {
  public void execute() {
    ...
  }
}

由于 MyEJB 是无状态 EJB,因此 doSomething 方法可以同时调用多次。

我的问题是:如果 doSomething() 同时被调用两次,那么其中一个调用将被阻塞,直到第一个调用完成?我的猜测是它被阻止了,因为只有一个静态实例。
如果我是对的,上面的代码并不好,因为“Something”类的“execute”方法是我的 EJB 的瓶颈。

谢谢, 五、

最佳答案

两个调用将同时运行,除非您使用“同步” block 或“写锁”限制访问。

关于java - 调用EJB中静态实例的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12261884/

相关文章:

java - 选择屏幕的像素选择

c++ - 声明一个静态常量和一个常量到未命名的命名空间有什么区别?

c++ - 静态类数据成员的范围

java - 如何在使用 hibernate 模板查询数据库的 EJB bean 中设置缓存?

java - Guava 是否为身份平等提供 Predicates.is(T) (a la Predicates.equalTo(T t))?

java - 如何解决Maven exec插件: classpath too long error?

java - JFrame Java setColor 和 fillRect 保持空白?

android - 如何在Activity中设置数据并在java类中获取

java - 将实体映射到 native SQL 查询

initialization - EJB 无状态 - 私有(private)成员初始化