2012-02-15 36 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

相關問題