【发布时间】:2010-10-08 13:24:38
【问题描述】:
目前,我正在努力解决 Sun 课程 java.net.Authenticator 中的一个错误。似乎Authenticator 类具有系统范围的静态Authenticator。这导致我的多线程应用程序出现以下问题。
- 线程 1 - 为用户 1 进行身份验证
- 线程 2 - 为用户 2 进行身份验证
- 线程 1 - 执行代码为用户 1 下载消息
此时,系统将获取用户 2 的消息,而不是用户 1 的消息。
我已尝试寻找解决方案。许多人建议尝试以下代码:
AuthCacheValue.setAuthCache(new AuthCacheImpl());
Authenticator.setDefault(exchangeAuthenticator);
但是,这对我不起作用,因为我的应用程序是多线程的(exchangeAuthenticator 将始终设置为在最新线程中初始化的身份验证器)。
如果有人有任何想法,即使是 hack 目前也能做到,我真的很感激,因为目前唯一“整洁”的解决方案是在主要执行方法上放置一个 synchronized 以产生戏剧性的效果在性能上。
【问题讨论】:
标签: java multithreading authentication sun