与问题Jetty startup delay类似,Jetty 8.1.2的启动时间随着WEB-INF / lib目录中依赖关系的增加而增加。 (20mb~60到90秒)
启用DEBUG(-Dorg.eclipse.jetty.LEVEL = DEBUG,另请参见本答案Enable Jetty DEBUG),输出中会出现以下行:
2012-04-27 11:13:38.095:DBUG:oeju.Scanner:scanned [/home/.../workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmpX/webapps]: {}
答案 0 :(得分:8)
这是一个正常的过程,因为Servlet-API 2.5正在所有类和Jars中寻找与Servlet相关的注释。通常,可以使用web.xml中的“metadata-complete”选项来避免这种情况:
<web-app metadata-complete="true" ...>
在Jetty 8.1.2中,这可以通过AnntionConfiguration类启动来识别,但无论如何都会发生扫描过程。这是Jetty 8.1.2的已知问题Jetty 8.1.2 scans all classes on classpath if there is >= 1xServletContainerInitializer with HandlesTypes on the classpath, regardless of metadata-complete="true"。
解决方法是使用模式来限制将包含在扫描过程中的JAR文件。例如。在Eclipse中,您可以将以下代码段附加到“/home/.../workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmpX/contexts/appname”中的“jetty-context.xml”。 xml“文件:
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg>
<Arg>.*/.*myPrefixedJarToScan1-[^/]\.jar$|.*/.*myPrefixedJarToScan2-[^/]\.jar$</Arg>
</Call>