0

私は受信リクエストをチェックするために以下のクラスを持っています。

public class SecuredAction extends Action.Simple 
{  


    @Override
    public Promise<Result> call(Context ctx) throws Throwable 
    {
        // Not doing anything now. Just interrupting it
        return delegate.call(ctx);
    }
}

そして、私はそれを別のコントローラーに適用しています

@With(SecuredAction.class) 
public class TestController extends BasicController {
public Result method1(){}
public Result method2(){}
--
}

問題は、ブラウザから複数のリクエストが送信された場合、リクエストが破損したり、レスポンスが混同されたりすることです。上記の場合、@With(SecuredAction.class) の場合、method1 と method2 の両方の呼び出しがそのうちの 1 つだけを通過します。使用されている。この注釈が削除されている場合、この問題は発生していません。コンテキストと関係がありますか?スレッドセーフではありませんか?どうするのが正しい方法ですか?何か助けてください。

4

1 に答える 1

2

SecuredAction を非シングルトン ( @Scope("prototype") ) にすることで問題が解決するようです。この後、問題はもう見られません。

これは、デリゲートが受信リクエスト間で共有される/スレッドが安全でないことを意味します。

于 2015-07-14T10:00:59.320 に答える