【发布时间】:2012-09-04 10:46:41
【问题描述】:
我猜测我们的代码库中有不正确的代码,但我不确定。所以我们得到了这样的 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 的瓶颈。
谢谢, 五、
【问题讨论】:
-
请注意,我认为整个 EJB 部分在这里根本不相关,我们只是有一个类的普通静态实例,如果 myEJB 是普通类,场景将是相同的.
-
嗨,拉斯穆斯,没错。我之所以提到 EJB,是为了强调只有一个 JVM。不管你是对的,这里 EJB 并不重要。
标签: java static ejb instance-variables simultaneous-calls