如何在 Jetty 9.4 中使用 Spring WebApplicationInitializer

我们有一个在 Jetty 9.2 上使用 Spring WebApplicationInitializer 加载的 Java 应用程序:


2019-07-11 09:52:18.464:INFO:oejs.Server:main: jetty-9.2.17.v20160517

2019-07-11 09:52:18.487:INFO:oejs.AbstractNCSARequestLog:main: Opened /apps/jetty/servers/erti/logs/2019_07_10.request.log

2019-07-11 09:52:18.491:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/apps/jetty/servers/erti/contexts/] at interval 1

2019-07-11 09:52:18.522:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.ContextHandler@446e7065{/hb,null,AVAILABLE}

2019-07-11 09:52:25.437:INFO:/services/information-requests:main: 1 Spring WebApplicationInitializers detected on classpath

2019-07-11 09:52:26.694:INFO:/services/information-requests:main: Initializing Spring root WebApplicationContext

但是,如果我们更新到 Jetty 9.4,WebApplicationInitializer 不会被拾取,并且每个页面都会收到 404(尽管静态资产仍然可见):


2019-07-11 09:55:22.915:WARN:oejx.XmlConfiguration:main: Property 'jetty.deploy.monitoredDirName' is deprecated, value from 'jetty.deploy.monitoredDir' used

2019-07-11 09:55:22.956:WARN:oejx.XmlConfiguration:main: Property 'jetty.port' is deprecated, value from 'jetty.http.port' used

2019-07-11 09:55:22.988:WARN:oejx.XmlConfiguration:main: Property 'jetty.keystore.password' is deprecated, use 'jetty.sslContext.keyStorePassword' instead

2019-07-11 09:55:22.990:WARN:oejx.XmlConfiguration:main: Property 'jetty.keymanager.password' is deprecated, use 'jetty.sslContext.keyManagerPassword' instead

2019-07-11 09:55:22.990:WARN:oejx.XmlConfiguration:main: Property 'jetty.truststore.password' is deprecated, use 'jetty.sslContext.trustStorePassword' instead

2019-07-11 09:55:23.089:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///apps/jetty/servers/erti/contexts/] at interval 1

是否需要启用特定的 Jetty 模块才能获取ServletContainerInitializer实例?我的印象是 ServletContainerInitializer 自 Servlet 3.0 以来就非常标准,而 Jetty 9.4 使用 3.1。或者为了让 Spring 容器初始化程序检测到我们的 WebApplicationInitializer,可能还需要其他东西?


慕田峪9158850
浏览 143回答 1
1回答

jeck猫

我发现了问题。我们web.xml还没有更新,仍然配置了 2.4 的 webapp 版本。Jetty 的行为已在https://github.com/eclipse/jetty.project/issues/1466中更改,因此它不再查找ServletContainerInitializer低于 2.5 的 webapp 版本。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java