如何确保一次只调用一个servlet(不是实例)?

时间:2017-01-02 09:24:21

标签: java servlets java-ee

我有一个应用程序,它可以进行大量的多个servlet调用。如何确保在完成特定的servlet X处理之前,不会调用Y,Z的其他servlet实例。

SingleThreadModel或同步将确保每个servlet只调用一个线程。但是,这可能不适用于多个servlet。

2 个答案:

答案 0 :(得分:0)

为每个服务器调用使用回调机制。第一次服务器呼叫失败,您可以拨打第二个电话。

答案 1 :(得分:0)

您可以通过定义自己的锁来实现手动同步。

例如,声明一个静态Object用作信号量:

public static final Object MY_LOCK = new Object();

和你要同步的地方你可以这样使用它:

public void someMethod() {
    synchronized(MY_LOCK) {
        // do stuff that may not be called at same time
    }
}

public void someOtherMethod() {
    synchronized(MY_LOCK) {
        // do other stuff that may not be called at same time
    }
}

这样你可以在不同的方法(或你的情况下的servlet)中使用相同的Lock。