やあみんな。EclipseRCPアプリケーションでOSGiサービスを使用しています。それらを追跡するために、org.osgi.util.tracker.ServiceTracker
クラスを使用しています。アプリケーションのサンプルコードは次のようになります
mailServiceTracker = new ServiceTracker(context, MailService.class.getName(), null);
mailServiceTracker.open();
MailService service = (MailService) mailServiceTracker.getService();
今私の問題は、新しいサービスを作成したときにgetService()
メソッドが頻繁に戻ることです。null
このコードは、アプリケーションに長期間存在するサービスに対しては非常にうまく機能しますが、新しいサービスを作成するたびに、サービスが最終的に検出されて追跡されるまで、多くのことを行う必要があります。私は定期的に例えば
- Eclipseの「Clean...」
- Eclipseのすべてのプロジェクトを「更新」する
- コマンドラインでプロジェクトを再構築します
それらが役立つこともあれば、役に立たないこともあります。誰かがそれらのトラッカーの経験があり、この動作を回避する方法と、作成直後にサービスを追跡する方法を教えてもらえますか?
ありがとう