如何在ejb中同步方法的某些部分

时间:2015-02-16 14:32:25

标签: java java-ee synchronization ejb jboss6.x

我有一个无状态的ejb,它部署在jboss应用服务器中,我不得不同步部分代码。

我用过

synchronized(this) {
....
}

后来我意识到代码会失败,因为容器会创建一个ejb池,而我的代码将无法正常工作。

所以我想到了创建静态final对象并将引用传递给synchronized块的想法。以下是代码段。

private static final Object object = new Object();

synchronized(object) {
.....
}

我想知道代码的正确程度是多少?

1 个答案:

答案 0 :(得分:0)

为了在JBoss下的ejb-pool中同步无状态EJB,你必须使用SingletonEJB,你可以在其中使用同步块。

使用EJB3.1,您可以使用@Singleton注释:

@Singleton

@Remote
@RemoteBinding(jndiBinding = "SingletonBean")
@Startup

public class SingletonBean { ....}

Altough,使用EJB3,您必须自己配置Jboss才能拥有Singleton EJB。

请参阅:Implement an HA Singleton