2

ビッグデータ要件の一部を処理するために、Apache Hadoop & hbase フレームワークを使用する製品を構築しています。また、レポート要件にも Oracle を使用しています。OSGiコンテナが提供するリモート展開、サービス管理、および疎結合パッケージ機能を利用するために、OSGiの方法でソフトウェアをバンドルしたいと考えています。

この分野では、いくつか疑問があります。

  1. 独自の Java アプリに関して言えば、それらから OSGi バンドルを作成し、OSGi コンテナーにデプロイする方法がわかりました。しかし、HBase/Hadoop などのクラスター化されたアーキテクチャーを持つ Java ベースの 3PP をどのように扱うのでしょうか? Fuse Fabric が Hadoop (実際には Map Reduce ではなく HDFS のみ) バンドルを作成したことを確認しましたが、一般的に 3PP のバンドルを作成するにはどうすればよいですか?

  2. Oracle などの非 Java ベースの 3PP をどのように処理しますか。そのための OSGi バンドルを作成して OSGi 経由で展開する必要がありますか、それともこれらの 3PP を OSGi の外部にインストールし、OSGi 経由でトリガーされてこれらの 3PP のステータスを追跡する監視スクリプトを作成する必要がありますか? この分野でのベストプラクティスは何ですか?

  3. OSGi コンテナー (Karaf など) を介して起動されたすべてのバンドルは、コンテナーの同じ単一の JVM 内で実行されますか? 一部のアプリケーションと 3PP は巨大であり、それらすべてを単一の JVM 内で実行すると、ヒープ/GC の問題が発生する可能性があります。ここでのベストプラクティスは何ですか?

ありがとう、よろしく スカンダ

4

2 に答える 2

0
  1. OSGi 以外のライブラリからバンドルを作成することは、適切なマニフェストを使用して再パッケージ化するのと同じくらい簡単ですが (そのためのツールがあります。以下を参照してください)、非常に困難になることもあります。OSGi には特別なクラスローディング モデルがあり、動的なクラス ローディングを行う多くの Java EE ライブラリは、このモデルではうまく機能しません。

  2. ここで何を意味するのかわかりません。理論的には、OSGi はBundle-NativeCodeマニフェスト ヘッダーを使用したネイティブ ライブラリのロードをサポートしていますが、私はその経験がありません。

  3. 通常、すべてのバンドルは同じ仮想マシンで実行されます。ただし、Karaf はCellarを介したクラスタリングをサポートしていますが、他のコンテナーについては知りません。

サードパーティ ライブラリをラップするためのツール

一般に、これに使用できますbnd(OSGi バンドル マニフェストの自動生成に関しては、最適なツールです)。PAX-URLwrapは、 Karaf にデフォルトで存在する protocol-handler を提供します。それを使用すると、ライブラリをラップするのと同じくらい簡単になります (たとえば、Karaf コマンド ラインまたは機能記述子から)。

wrap:file:path/to/library
于 2012-11-26T14:20:43.097 に答える
0

Oracle および他のほとんどの db ライブラリの場合は単純です。pax url のラップ プロトコルを使用できます。カバーの下では、デフォルトのオプションで bnd を使用します。Apache Karaf で dbs を使用するためのチュートリアルがあります。

一般に、サードパーティのライブラリからバンドルを作成することは、簡単なものから非常に複雑なものまでさまざまです。それは主に、ライブラリが使用するダーティなクラスローディング トリックの量に依存します。自分でバンドルしようとする前に、既製のバンドルがあるかどうかを確認する必要があります。今日のほとんどのライブラリは、バンドルとして直接提供されるか、何らかのソースからバンドルとして既に入手可能です。たとえば、servicemix プロジェクトは多くのバンドルを作成します。何かが利用可能かどうか、そこのユーザーリストで尋ねることができます.

于 2012-11-27T07:51:03.433 に答える