在EJB中调用静态实例的方法

时间:2012-09-04 10:46:41

标签: 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的瓶颈。

谢谢, 诉

1 个答案:

答案 0 :(得分:1)

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