Kro*_*ros 4 java authentication multithreading sun
目前我正在努力解决Sun课堂上的一个错误java.net.Authenticator.似乎Authenticator该类具有系统范围的静态Authenticator.这导致我的多线程应用程序中出现以下问题.
此时,系统将获取用户2的消息,而不是用户1的消息.
我试过寻找解决方案.许多人建议尝试以下代码:
AuthCacheValue.setAuthCache(new AuthCacheImpl());
Authenticator.setDefault(exchangeAuthenticator);
Run Code Online (Sandbox Code Playgroud)
但是,这对我来说不起作用,因为我的应用程序是多线程的(exchangeAuthenticator将始终设置为在最新线程中初始化的身份验证器).
如果有人有任何想法,即使是黑客目前也会做,我真的很感激,因为目前唯一的"整洁"解决方案是synchronized在主要的执行方法上放置一个对性能产生巨大影响的方法.
根据我的经验,你最好的办法是放弃内置的http支持并获得Apache的HttpClient.
如果这不是一个选项,请创建一个扩展Authenticator的单个对象,但将用户名和密码存储在ThreadLocal实例中.这样每个线程都可以检索它自己的值.
| 归档时间: |
|
| 查看次数: |
1427 次 |
| 最近记录: |