我目前使用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);
}
}