28

私は Java と OSGi の世界全体にかなり慣れていないため、OSGi Web アプリケーションのエコシステムを理解するのに苦労しています。

より正確に言うと、私は現在、生態系のすべての部分がどのように相互に関連しているかを理解しようとしています:

  • OSGi フレームワーク (例: Apache Felix、Equinox、Knoplerfish)
  • OSGi ランタイム (Spring DM Server、Pax Runner、Apache Karaf など)
  • Web Extender (Pax Web Extender、Spring Web Extender など)
  • Web コンテナ (Apache Tomcat、Jetty など)

彼らの関係についての私の実際の理解を視覚的に表現するために、この画像をチェックしてください。

代替テキスト

私の知る限り、OSGi フレームワークは OSGi 仕様の実装です。ランタイムは、OSGi 仕様の上にロギングなどの追加機能を追加するディストリビューションです。OSGi と Tomcat のような Web コンテナーのクラスパス メカニズムにはいくつかの違いがあるように思われるため、何らかのトランスレーターが必要です。この部分は「Web Extender」によって処理されます。

私のためにこのすべてを明確にしてくれませんか?私はすべてを正しく理解していますか?

4

2 に答える 2

25

OSGi は、相互作用するソフトウェア モジュールの API およびパッケージングの点で標準です。これは、JPA や Java EE などの他の API 標準に似ています。

OSGi ランタイムは、OSGi 標準に従うサーバーであり、標準の実装です。あなたはいくつかの一般的なものについて言及しています:Knopflerfish、Eqinox。これらにより、OSGi バンドルを実行できます。

Web コンテナーは通常、Java EE の Web 固有の部分 (サーブレット) の実装を指します。サーブレット標準では、OSGi と同様に API とパッケージングも定義されていますが、異なるだけです。

Java EE Web アプリを実行するにはサーバーが必要です。アプリを Java Web Archive (WAR) としてパッケージ化し、アプリケーション サーバーにアプリを起動するように依頼します。あなたが言及したように、Tomcat、Jetty などのサーバーがいくつかありますが、Glassfish や JBoss など、Java EE 標準の大部分をカバーするより大きなサーバーもあります。

Web エクステンダーは、サーブレット標準を OSGi に統一しようとします。すでにパッケージ化されている WAR に OSGi 固有のデータを追加すると、OSGi ランタイムによって WAR が自動的に解析されて開始されます。WAR サーブレットは、Web エクステンダーによって OSGi http サービスに公開されます。Web エクステンダーを使用すると、Tomcat のような Java EE 準拠のサーバーを必要とせずに、OSGi ランタイムのみを使用して、標準の OSGi アプリケーションと WAR の両方を実行できます。

于 2010-04-02T16:51:43.633 に答える
3

ジェンス、

私は OSGi の経験がある程度あるので、単純な OSGi から始めることはお勧めしません。

代わりに、 Eclipse RCP (Rich Client Platform)から始めてください。

RCP および RAP 開発者向けの Eclipse IDE をここからダウンロードすると、OSGi ランタイムだけでなく、フル機能の統合 IDE も入手できます。

幸運なことに、ほんの数か月前にリリースされたばかりのEclipse リッチ クライアント プラットフォーム (第 2 版)という本を手に入れることができ、 Eclipse RCP に関する更新された情報/ガイドが含まれています。

OSGi は Eclipse RCP の基本的な構成要素ですが、OSGi 自体は (少なくとも初心者にとっては) 混乱し退屈です。Eclipse RCP を使いこなすのは、はるかに簡単で楽しく、機能的な「何かをする」アプリを数時間で構築できます。

プレーンな OSGi では、最初の数日以内に ClassNotFound 例外を取り除くことができれば、すでに幸運です。

Eclipse RCP をしばらく使用した後、アプリをEclipse RAPに「変換」して、Java サーブレット コンテナー上で Web アプリケーションとして実行します。気に入らない場合でも、気に入るかどうかを確認してください... この時点で、OSGi の概念と実践をすでに把握しているはずです。「プレーンな OSGi」への航海は、ゼロから始めるよりもいくらかスムーズです。

頑張れイェンス!

PS このことについては、Java EE ブログでも書いていますが、OSGi については必ずしも具体的に書いているわけではありません。

于 2010-07-17T13:16:52.130 に答える