私は OSGI を初めて使用します。ホスト サービスとコンシューマ サービスのバンドルを実装し、それらがどのように機能するかを確認しました。バンドルは現在アクティブな状態です。ただし、OSGI タイプのアプリケーションではない別のアプリケーションがあります。これは標準の Java アプリケーションです。 .今、私の混乱は、
- この Java プロジェクトでこれらの OSGI バンドルを参照するにはどうすればよいですか (私は Eclipse を使用しています。通常の Jar ファイルを参照するように参照できますか?)。
- ホスト サービスとコンシューマ サービスがアクティブなときに、サービス メソッドを呼び出すにはどうすればよいでしょうか。
通常、参照を取得することにより、Activator の Start メソッドでサービスにアクセスできることがわかりました。しかし、Service が正常に開始された後、Start イベントは再びトリガーされません。今回は、バンドルがアクティブ状態のときにサービスを明示的に呼び出すにはどうすればよいでしょうか?OSGI プロジェクトを作成すると、Eclipse は次の静的参照と静的 getContext() メソッドを自動的に作成します。この静的 getContext() を使用して目標を達成できますか? ?
Eclipse 自動作成コード
private static BundleContext context;
static BundleContext getContext()
{
return context;
}
public void start(BundleContext bundleContext) throws Exception
{
Activator.context = bundleContext;
}