0

アプリケーションを管理するためのシェルを設計しています。次のアプリケーションバージョンでOSGiを使用できるようにする予定ですが、OSGiプラットフォーム(Felix、Equinoxなど)はまだ決定されていません。シェルを使ってOSGiを管理できたらいいのにと思います。

プラットフォームに依存しない方法でOSGiを管理するにはどうすればよいですか?サンプルコードを教えていただけますか?

ありがとう、ウルリッヒ

4

3 に答える 3

1

Apache Karaf などのコンソール実装をチェックアウトできます。OSGi ランタイムを完全に備えています。コマンドの概要は次のとおりです。サブセットのみを選択することもできます。

ランタイムを使用して、コマンドでコンソールを拡張することもできます: http://karaf.apache.org/manual/latest-2.2.x/developers-guide/extending-console.html

于 2012-06-05T09:46:48.253 に答える
1

実際には、karaf のコンソールしか使用できません。サーバーとして単純に Apache Karaf を使用できます。構成設定だけで Felix から Equinox に切り替えることができます。Karaf が実際にどのように機能するかに興味がある場合は、Karaf に関するチュートリアル シリーズを作成しました。http://www.liquid-reality.de/display/liquid/Karaf+Tutorials

于 2012-06-05T11:35:26.843 に答える
0

はい、もちろん、プラットフォームに依存しない方法で 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 と同様に、それらのいずれでも機能します。

于 2012-06-05T11:10:30.573 に答える