2

どのバンドルをインストールする必要がありますか? 少なくとも、これは Jetty などのサーブレット コンテナー/Web サーバーである必要がありますが、基本的なorg.apache.felix.http.jettyバンドルで対応できますか、それとも他のバンドルで を検出するために他に必要なものはありweb.xmlますか?

webapp を標準の WAR に入れ、OSGi ヘッダーを追加すれば完了ですか? または、OSGi 環境に必要な webapp 固有のヘッダーはありますか?

他にどのような構成を行う必要がありますか?

Maven を使用してこれらのステップを自動化するオプションは何ですか?

バンドルをデプロイしようとしましたorg.apache.felix.http.jettyが、Jetty が localhost:8080 で 404 と応答します。次に、静的な HTML ファイルだけをwelcome-file. 私が知る限り、Jetty はデプロイメント記述子にさえ気付かず、少なくともテスト Web アプリケーションを Felix にデプロイしても何も変わりません。

4

2 に答える 2

1

Jetty と webapp だけでは十分ではありません。特定のコンテキストで Web サーバーに実際に webapp を登録する接着剤が必要です。

機能する一例:

  • バンドル内の Pax Web サービスをorg.ops4j.pax.web.pax-web-serviceHTTP サービスとして使用し、Jetty も実行します
  • Webapp-Contextバンドル マニフェストにヘッダーを追加します
  • バンドルの登録時に Pax Web エクステンダーを使用してそのヘッダーを検索すると、それが http サービスに接続されます。

何らかの理由で、これは Pax Web サービスでなければなりません。それを org.apache.felix の基本的な jetty バンドルに置き換えると、URL が適切に解決されません。

ここで何が起こっているのかを実際に理解するにはまだ長い道のりですが、少なくとも機能するようになりました. フックアップを実行するために webapp バンドルにそのバンドル アクティベーターで何かをさせれば、Pax バンドルとバンドル ヘッダーがなくてもできると思います。

于 2009-10-20T13:21:46.713 に答える
1

Pax Web を使用する必要はありませんが、非常に簡単になります。Pax Web がない場合は、OSGi HTTP サービスを実装するバンドル (これには Jetty バンドルがあります) が必要です。次に、HttpService へのサービス参照を取得します。これで webapp を登録できますが、面倒です。血みどろの詳細を見たい場合は、Pax Web コードを見てください。Pax Web は HttpService に何も追加しませんが、すべての登録の手間を処理するだけです。

于 2009-11-13T14:12:59.600 に答える