3

OSGi および OSGi コンテナーを調査しているときに、GlassFish を OSGi コンテナーとして言及しているこのSO の質問に出くわしました。

これはどのように可能ですか?!?!

私の理解では、Java 準拠のアプリ サーバーである OGS には 2 つのコンテナーがあります。

  • Web コンテナー: Web アプリおよびサービスの WAR ファイルをデプロイする場所
  • アプリケーション コンテナ: ビジネス ロジック用の EJB をデプロイする場所

OSGi バンドルは、このパラダイムのどこに当てはまりますか?!? OGS では、OSGi バンドルをアプリ コンテナにデプロイして、EJB などのように扱うことができますか? OGS の仕組みについて間違っている場合は、訂正してください。前もって感謝します!

4

3 に答える 3

5

うーん、OSGiが何であるかについてのかなり完全な誤解...

OSGiは、コードを整理して、再利用可能なコンポーネントからコードを構築し、サービスレイヤーを介してコラボレーションできるようにするフレームワークです(Class.forNameやXMLは不要です)。

OSGiフレームワークはスタンドアロンで実行でき、アプリケーション内で実行でき、WARファイルで実行でき、アプリケーションサーバー内で実行できます。また、OSGiはどこでも統計に依存しないため、OSGi内でOSGiを実行することもできます。

OSGi Allianceは、モジュールが依存関係を指定できるように、モジュール(バンドル)のフォーマットを指定します。Allianceは、モジュールをインストールおよび管理するためのAPIも指定しています。そして最後に、アプリケーションを開発するときに役立つ多数のインターフェースを指定します。

Websphere、Glassfish、JBoss、Jonasはすべて、OSGiバンドルのデプロイをサポートしています。

于 2012-07-19T11:53:22.753 に答える
5

OSGi は、さまざまなバンドルの追加/削除/アップグレード、依存関係の処理、ステータスに関するランタイム情報の提供などを可能にするモジュール システムです。

GlassFish (Apache Felix OSGi コンテナーを含む) に関して言えば、アプリケーション サーバー (HTTP サーバー、JMS サーバーなど) のさまざまな機能がバンドルとして実装されます。サービスを開始、インストール、削除できる OSGi コンテナー用のコンソールおよび Web ベースのインターフェースがあります (以下の PDF を参照)。

Java EE アプリケーションに関する限り、OSGI コンテナーとも対話できます。たとえば、EJB は OSGi サービスとしてエクスポートでき、EJB は OSGi サービス自体を使用することもできます。

詳細については、 http: //glassfish.java.net/public/GF-OSGi-Features.pdfを参照してください。

于 2012-07-18T20:37:12.417 に答える
0

Glassfish は内部的に OSGi を使用して、あなたが言及した機能を提供します。それに加えて、独自の OSGi バンドルをデプロイできます。https://wikis.oracle.com/display/GlassFish/OSGiを参照してください 。ただし、OSGi と Java EE の間に実際の接続はありません。Glassfish の OSGi バンドルで JavaEE をまだ使用することはできません。この場合、OSGi の Weld のような最初のイニシアチブがあります: http://www.slideshare.net/TrevorReznik/weldosgi-injecting-easiness-in-osgi ただし、実際には本番環境に対応していません。

于 2012-07-18T20:21:53.797 に答える