1

由于jetty-osgi-boot,我正在OSGi容器中运行Jetty 8.1.12服务器,如Jetty 8Jetty 9文档中所述

我想配置默认的 webapp 描述符 ( etc/webdefault.xml)。当我定义jetty.home时,码头拿起etc/jetty.xml但它不加载etc/webdefault.xml

我不想依赖配置包(通过jetty.home.bundle系统属性),因为我希望配置易于修改。

出于同样的原因,我不想依赖Jetty-defaultWebXmlFilePathMANIFEST 标头,而且它会将我的 webapp 绑定到码头。

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

简短的回答:我不能让码头 8.1.12 在 OSGi 下加载 webdefaults.xml。

经过数小时的谷歌搜索、源代码阅读和调试,我得出了以下结论:

  • MANIFEST标Jetty-defaultWebXmlFilePath头未按预期工作。它无法解析包条目路径,只能解析绝对文件系统路径。绝对 FS 路径不是一个现实的选择。

  • 大部分配置都是硬编码的ServerInstanceWrapperBundleWebAppProvider因此我们无法配置默认描述符位置。此位置以默认值结束,即 IIRC org/eclipse/jetty/webapp/webdefault.xml,.

我求助于修补 jetty-osgi 以便它可以读取一些配置并将其应用于BundleWebAppProvider. FWIW 这个 hack 可以在github 上找到

于 2014-02-10T11:44:32.497 回答