我正在OSGi容器中运行Jetty 8.1.12服务器,这要归功于jetty-osgi-boot,如Jetty 8和Jetty 9文档中所述
我想配置默认的webapp描述符(etc/webdefault.xml
)。当我定义jetty.home
时,码头会选择etc/jetty.xml
,但不会加载etc/webdefault.xml
我不想依赖配置包(通过jetty.home.bundle
系统属性),因为我希望配置容易修改。
出于同样的原因,我不想依赖Jetty-defaultWebXmlFilePath
MANIFEST标题,而且它会将我的webapp绑定到jetty。
jetty-osgi-boot软件包包含jetty-deployer.xml
configuration file这个已注释掉的块:
<!-- 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文件位置?
答案 0 :(得分:0)
简短回答:我无法使用jetty 8.1.12在OSGi下加载webdefaults.xml。
经过数小时的谷歌搜索,源阅读和调试,我得出了这些结论:
Jetty-defaultWebXmlFilePath
MANIFEST标头未按预期工作。它无法解析包条目路径,只能解析绝对文件系统路径。绝对FS路径不是一个现实的选择。
大部分配置都是ServerInstanceWrapper
和BundleWebAppProvider
之类的硬编码所以我们无法配置默认描述符位置。此位置最终为默认值,即IIRC,org/eclipse/jetty/webapp/webdefault.xml
。
我使用了修补jetty-osgi,以便它可以读取一些配置并将其应用到BundleWebAppProvider
。 FWIW这个黑客可在github