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