这是因为 Jetty 9 会扫描 WEB-INF 文件夹中的所有 Jars 以获取注释以启动 Web 上下文。如果您试图找到解决此问题的方法,您可能已经发现了这一事实。我尝试了几个这样的答案,但从未在其中找到正确的解决方案。
为了尽可能地消除这种扫描,我们可以定义一个模式,告诉 Jetty 扫描哪些源,不扫描哪些源。这可以通过在 maven 中设置一些配置,或者通过在jetty-context.xml
. (如果你使用的是 maven 插件,你还需要jetty-context.xml
在你的 Jetty 中设置pom.xml
)
其他一些对我不起作用的解决方案(没有增加启动时间或根本没有正确启动)
Jetty 8.1.2 启动延迟
jetty8 与 maven 插件需要很长时间才能启动
等等
正确的解决方案也是使用这样jetty-context.xml
的,但使用另一种模式。在 Spring 应用程序中,我们需要扫描 Spring jars,如果您有很多依赖项,仅此一项就已经有了巨大的提升。spring-web
如果您只扫描罐子,那就更好了。如果您有 Spring Security,那么可能还需要包含这些 jar。
因此,给我最大加速的模式如下所示:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
<Arg>.*/spring-security[^/]*\.jar$|.*/spring-web[^/]*\.jar$|.*/classes/.*</Arg>
</Call>
</Configure>
我们排除任何不在我们classes
文件夹中的内容WEB-INF
,以及任何不包含给定正则表达式模式的 jar。
希望这对某人有帮助!