gpt4 book ai didi

spring - jetty 因扫描而启动延迟

转载 作者:行者123 更新时间:2023-12-04 03:04:03 25 4
gpt4 key购买 nike

上下文和设置信息:

带有Eclipse jetty 插件的

  • Jetty 9
  • Spring 4.1.1。使用Spring Security 3.2.3的发布
  • Spring Java配置(无web.xml)

  • 问题描述
    在使用Spring的JavaConfig而不是 web.xml引导Spring上下文的项目中,启动jetty 9的速度非常慢。 jetty 在相当长的时间内似乎无所作为。这发生在以下行之后:
    INFO:oejs.Server:main: jetty-9.2.3.v20140905
    Jetty最终确实可以启动,但是与常规的tomcat 7发行版相比,启动时间很长。

    附加资源
        public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {    
    //implementation
    }

    最佳答案

    这是由于Jetty 9会扫描WEB-INF文件夹中的所有Jars中的注释以启动Web上下文。如果您试图找到解决此问题的方法,则可能已经发现了这一事实。我尝试了几种这样的答案,但从未在其中找到正确的解决方案。

    为了尽可能消除这种扫描,我们可以定义一种模式,该模式告诉Jetty要扫描哪些源,哪些不扫描。这可以通过在Maven中设置一些配置,或通过在jetty-context.xml中设置一个属性来完成。 (如果使用的是Maven插件,则还需要在jetty-context.xml中设置Jetty的pom.xml)

    其他一些对我不起作用的解决方案(启动时间没有增加或根本没有正确的启动)

    Jetty 8.1.2 startup delay
    jetty8 with maven plugin takes to long to start

    等等。

    正确的解决方案也可以使用jetty-context.xml来完成,但是要使用另一种模式。在Spring应用程序中,我们需要扫描Spring jar,如果您有很多依赖项,仅此一项就已经可以大大提高工作效率。更好的是,如果您只扫描spring-web jar 。如果您具有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>

    我们排除 classesWEB-INF文件夹中不存在的所有内容,以及不包含给定正则表达式模式的任何jar。

    希望这对某人有帮助!

    关于spring - jetty 因扫描而启动延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26927939/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com