7

もともと Eclipse RCP アプリ用に開発されたコード (つまり、Eclipse プラグイン/OSGi バンドルとしてボックス化されている) をサーブレットで再利用する必要があります。

多くのブログ投稿、記事、ウィキなどを読んだ後、私は次のことを知っているところにたどり着きました。

  1. OSGi フレームワーク (私の場合は Equinox) は、サーブレット コンテナー (私の場合は Tomcat 7) に埋め込むことができます。
  2. または、Tomcat を OSGi フレームワークに組み込むことができます。

Equinoxは、2 番目のオプションがより簡単であることを推奨しています。しかし、本番環境では 1 を推奨しています。理由はわかりません。どの場合に何が本当に良いのか、そしてその理由は何ですか?

私は非常にベテランの Tomcat ユーザーですが、Tomcat を Equinox に埋め込むと、管理が大幅に変わりますか? つまり、Equinox に組み込まれた Tomcat では何が違うのでしょうか?

4

3 に答える 3

5

Jetty を使用するかなり複雑な Web アプリケーションを非 OSGi から Equinox 上の OSGi に移行しています。OSGi をフレームワークとして使用してアプリを実行することを選択した場合、たとえばオプション #2 の場合、アプリが消費するものはすべて OSGi バンドルでなければなりません。商用ライブラリの外部またはサード パーティ。多くのオープン ソースを使用している場合、バンドルを見つけるのは非常に簡単です。または、バンドルが見つからない場合は、BNDTools を使用して自分でいつでもバンドル化できます。それでも、このアプローチはすべての適切な依存関係を把握するのに時間がかかる可能性があり、可能性のあるクラス ローダーの問題には OSGi に関するハックが必要です - OSGi を Tomcat に埋め込むアプローチ。私だけど

ところで、WAB の興味深い利点の 1 つは、WebApps 間でコードを簡単に共有できることです。これは、WebApps がバンドルとしてデプロイされ、パッケージを簡単にエクスポート/インポートできるためです。今日の OSGi 以外の展開では実際には不可能なことです。

于 2012-06-14T16:15:44.120 に答える
5

まず、コードにはマニフェスト以外に OSGi/Equinox の依存関係がありますか? そうでない場合は、プレーンな Tomcat で問題なく動作するはずです。

私の理解では、Tomcat を Equinox に組み込むことで、Tomcat の管理が大幅に変わるということです。server.xml と catalina.sh を含むフォルダー レイアウトはなくなります。代わりに、おそらく config admin を通じて Equinox アプリケーションを管理することになります。

第 2 に、OSGi には 2 つのサーブレット プログラミング モデルと展開モデルがあります。1 つ目は、サーブレットとリソースをプログラムで登録する HttpService です (これは、拡張ポイントを介して行うこともできます)。この場合、アプリケーションは単なるバンドルのコレクションです。ただし、フィルターは使用できません。2 つ目は、OSG 化された WAR である Web アプリケーション バンドル (WAB) です。

于 2012-04-23T05:20:48.590 に答える
4

Apache Sling のmaven-launchpad-pluginは、OSGi フレームワーク (標準として Apache Felix、他がサポートされているかどうかは不明) と定義した一連のバンドルを埋め込む war ファイルを生成できます。Tomcat で OSGi アプリを実行するために使用できます。

于 2012-04-23T07:36:48.853 に答える