現在、Sun のクラスのバグに苦しんでいjava.net.Authenticatorます。Authenticatorクラスにはシステム全体の static があるようAuthenticatorです。これにより、マルチスレッド アプリケーションで次の問題が発生します。
- スレッド 1 - ユーザー 1 の認証
- スレッド 2 - ユーザー 2 の認証
- スレッド 1 - コードを実行して、ユーザー 1 のメッセージをダウンロードします。
この時点で、システムはユーザー 1 のメッセージではなく、ユーザー 2 のメッセージを取得します。
私は解決策を探してみました。多くの人が次のコードを試すことを提案しました:
AuthCacheValue.setAuthCache(new AuthCacheImpl());
Authenticator.setDefault(exchangeAuthenticator);
ただし、私のアプリケーションはマルチスレッドであるため、これは機能しません (exchangeAuthenticator最新のスレッドで初期化されたオーセンティケーターに常に設定されます)。
誰かが何か考えを持っているなら、現時点ではハックでも構いませんが、私はそれを本当に感謝していsynchronizedます.