1

Jetty 8およびJetty 9のドキュメントで説明されているように、jetty-osgi-boot のおかげで、OSGi コンテナー内で Jetty 8.1.12 サーバーを実行しています。

デフォルトの webapp 記述子 ( ) を構成したいと考えていますetc/webdefault.xml。を定義するjetty.homeと、jetty がピックアップされますetc/jetty.xmlが、ロードされませんetc/webdefault.xml

jetty.home.bundle構成を簡単に変更できるようにするため、(システム プロパティを介して) 構成バンドルに依存したくありません。

Jetty-defaultWebXmlFilePath同じ理由で MANIFEST ヘッダーに依存したくありません。さらに、webapp が jetty に結び付けられます。

jetty-osgi-boot バンドルには、次のコメントアウトされたチャンクを含むjetty-deployer.xml構成ファイルが含まれています。

 <!-- Providers of OSGi Apps -->
  <Call name="addAppProvider">
    <Arg>
      <New class="org.eclipse.jetty.osgi.boot.OSGiAppProvider">
        <Set name="defaultsDescriptor"><Property name="jetty.home" default="."/>/etc/webdefault.xml</Set>
        ...

OSGiAppProviderクラスがもう存在しないため、これは機能しません。

webdefaults.xml ファイルの場所を構成する他の方法はありますか?

4

1 に答える 1

0

簡単な回答: OSGi で webdefaults.xml をロードするための jetty 8.1.12 を使用できませんでした。

何時間にもわたるグーグル、ソースの読み取り、およびデバッグの後、次の結論に達しました。

  • Jetty-defaultWebXmlFilePathMANIFEST ヘッダーが期待どおりに機能しませんでした。絶対ファイル システム パスのみで、バンドル エントリ パスを解決できませんでした。絶対 FS パスは現実的な選択肢ではありませんでした。

  • 構成の多くは などにハードコーディングされServerInstanceWrapperているBundleWebAppProviderため、デフォルトの記述子の場所を構成することはできません。この場所は最終的にデフォルトの IIRC になりorg/eclipse/jetty/webapp/webdefault.xmlます。

jetty-osgi にパッチを適用して、構成を読み取っBundleWebAppProviderに適用できるようにしました。FWIW このハックはgithubで入手できます

于 2014-02-10T11:44:32.497 に答える