Java WS Authenticator в многопоточной среде

голоса
4

На данный момент я борюсь с ошибкой в классе Солнца java.net.Authenticator. Кажется , что Authenticatorкласс имеет общесистемного статичной Authenticator. Это приводит к следующей задаче в моем многопоточном приложении.

  1. Тема 1 - Идентифицирует для пользователя 1
  2. Тема 2 - Идентифицирует для пользователя 2
  3. Тема 1 - Выполняет код для загрузки сообщений для пользователя-

На данный момент, система будет получать сообщения для пользователя 2 вместо сообщения для пользователя 1.

Я попытался найти решение. Многие предложил использовать следующий код:

AuthCacheValue.setAuthCache(new AuthCacheImpl());
Authenticator.setDefault(exchangeAuthenticator);

Однако, это не работает для меня , так как мое приложение многопоточное ( exchangeAuthenticatorвсегда устанавливается аутентикатору инициализируется в последнем потоке).

Если у кого есть какие - либо идеи, даже хак бы сделать в данный момент, я был бы очень признателен , что, так как в данный момент только «аккуратное» решение поместить synchronizedна основном методе выполнения с драматическим эффектом на производительности.

Задан 08/10/2010 в 14:24
источник пользователем
На других языках...                            


1 ответов

голоса
6

По моему опыту, лучше всего, чтобы угробить встроенную поддержку HTTP и получить в Apache HttpClient .

Если это не вариант, создать один объект , проходящий Authenticator, но хранить имя пользователя и пароль в ThreadLocal случаях. Таким образом , каждый поток может получить его собственных значений.

Ответил 08/10/2010 в 18:24
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more