В настоящее время я использую Owasp ESAPI для управления аутентификацией в своем веб-приложении на Java и добавляю SingleAnt MyAuthenticator с помощью guice.injectMembers (this).Я хотел бы отойти от этого подхода и использовать созданный в виде маски объект Singleton-Scoped.Мне понравилась многопоточная безопасность синглтона ESAPI и безопасность синглетонов в целом с использованием двойной проверки блокировки, IODH Idiom или стиля Enum INSTANCE Блоха.
Что мне нужно сделать с моим Guicified Singleton-Sopeded Authenticator, чтобы сделать его поточно-ориентированным, а также поле ThreadLocal, которое я использую для получения и установки моего текущего пользователя?
Я бы хотел, чтобы все приложение работало с внедрением зависимостей, но нене хочу, чтобы это сломалось при одновременном доступе веб-приложения.Любые предложения или распространенные подводные камни?
Используемый мной объект 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);
}
}