アプリケーションを管理するためのシェルを設計しています。次のアプリケーションバージョンでOSGiを使用できるようにする予定ですが、OSGiプラットフォーム(Felix、Equinoxなど)はまだ決定されていません。シェルを使ってOSGiを管理できたらいいのにと思います。
プラットフォームに依存しない方法でOSGiを管理するにはどうすればよいですか?サンプルコードを教えていただけますか?
ありがとう、ウルリッヒ
アプリケーションを管理するためのシェルを設計しています。次のアプリケーションバージョンでOSGiを使用できるようにする予定ですが、OSGiプラットフォーム(Felix、Equinoxなど)はまだ決定されていません。シェルを使ってOSGiを管理できたらいいのにと思います。
プラットフォームに依存しない方法でOSGiを管理するにはどうすればよいですか?サンプルコードを教えていただけますか?
ありがとう、ウルリッヒ
Apache Karaf などのコンソール実装をチェックアウトできます。OSGi ランタイムを完全に備えています。コマンドの概要は次のとおりです。サブセットのみを選択することもできます。
ランタイムを使用して、コマンドでコンソールを拡張することもできます: http://karaf.apache.org/manual/latest-2.2.x/developers-guide/extending-console.html
実際には、karaf のコンソールしか使用できません。サーバーとして単純に Apache Karaf を使用できます。構成設定だけで Felix から Equinox に切り替えることができます。Karaf が実際にどのように機能するかに興味がある場合は、Karaf に関するチュートリアル シリーズを作成しました。http://www.liquid-reality.de/display/liquid/Karaf+Tutorials
はい、もちろん、プラットフォームに依存しない方法で OSGi を管理することは可能です。それはすべて、自分で実装する準備ができている管理の程度に依存します.
OSGi API を使用すると、すべてにアクセスできます。シェルやコマンドの形式などを設計/選択するだけで済みます。
コマンド プロンプト ベース、Web ベース、またはリモート管理プロトコルをバックエンド管理サーバーで使用しますか?
1) 機能から始めましょう。シェルはバンドル自体として実装されます。このバンドルの BundleContext を使用して、他のバンドル オブジェクトにアクセスできます。それらを通じて、次のことができます。
BundleContext.installBundle(String)
– 指定されたロケーション文字列 (URL である必要があります) からバンドルをインストールします。
BundleContext.getBundles( )
Bundle.start()
Bundle.update( InputStream input )
バンドル、バンドルのバージョン、エクスポート/インポートされたパッケージ、登録されたサービスを検査します
OSGi サービス レジストリから、ConfigurationAdmin サービスを取得できます。これにより、バンドルの構成を一覧表示し、それらを変更できます。
レジストリから LogService を取得して、ログを読み取ることもできます
StartLevel サービスから、fw の開始時にバンドルの開始順序を制御できます。
などなど
2) 上記の情報にどのようにアクセスできるようにしますか? コマンドベースのコンソールが必要な場合は、システム出力を使用して作成できます。この実装でアイデアを確認できます
Web ベースのサーブレットが必要な場合、プラットフォームに依存しない最も簡単な方法は、標準のサーブレットを作成し、それを標準の OSGi HTTP サービスに登録することです。次に、関連する Web ページが上記の関数を呼び出します。
リモート管理プロトコルが必要な場合は、さまざまな可能性にマップできます。たとえば、OMA DM 仕様に対応する OSGi DMT サービスを確認してください。これは、TR-069 管理プロトコルに簡単に対応します。既存の実装があります。
これらはすべて、Felix、Equinox などから完全に独立しており、他の OSGi fw と同様に、それらのいずれでも機能します。