我有一个无状态的ejb,它部署在jboss应用服务器中,我不得不同步部分代码。
我用过
synchronized(this) {
....
}
后来我意识到代码会失败,因为容器会创建一个ejb池,而我的代码将无法正常工作。
所以我想到了创建静态final对象并将引用传递给synchronized块的想法。以下是代码段。
private static final Object object = new Object();
synchronized(object) {
.....
}
我想知道代码的正确程度是多少?
答案 0 :(得分:0)
为了在JBoss下的ejb-pool中同步无状态EJB,你必须使用SingletonEJB,你可以在其中使用同步块。
使用EJB3.1,您可以使用@Singleton注释:
@Singleton
@Remote
@RemoteBinding(jndiBinding = "SingletonBean")
@Startup
public class SingletonBean { ....}
Altough,使用EJB3,您必须自己配置Jboss才能拥有Singleton EJB。