2012-02-15 33 views
0

我目前使用Owasp ESAPI来管理我的Java Web应用程序中的身份验证,并且我正在使用guice.injectMembers(this)注入Singleton MyAuthenticator。 。我想退出这种方法并使用guice创建的Singleton-Scoped对象。我喜欢使用Double-Checked Locking,IODH Idiom或Bloch的Enum INSTANCE风格来保证ESAPI单例的线程安全性,以及一般单例的安全性。如何使一个Singleton范围对象线程安全(Guice + Owasp ESAPI)

什么我需要做的,我Guicified singleton类型验证器,使其线程安全的,以及我用来获取和设置我的当前用户ThreadLocal的领域?

我想让整个应用程序都使用依赖注入,但不希望它在Web应用程序并发访问时中断。任何建议或常见陷阱?

ThreadLocal的对象,我使用看起来像下面的代码:

private final ThreadLocalUser currentUser = new ThreadLocalUser(); 

private class ThreadLocalUser extends InheritableThreadLocal<User> { 

    @Override 
    public User initialValue() { 
     return User.ANONYMOUS; 
    } 

    public User getUser() { 
     return super.get(); 
    } 

    public void setUser(User newUser) { 
     super.set(newUser); 
    } 
} 

回答

0

不幸的是我不够了解OWASP ESAPI给出一个明确的答案,但你可能有一些运气寻找到Guice的AOP支持。您可以拦截类上的所有方法调用,并提供您喜欢的任何并发行为。

http://code.google.com/p/google-guice/wiki/AOP

相关问题