2012-01-29 64 views
10

我最近开始为我的集成测试嵌入Tomcat 7,而不是Tomcat 6,因为我需要7个功能中的一些,它是我们的目标容器。与Tomcat 6嵌入式相比,性能非常低。它需要20秒的时间来启动服务器。这是我使用的代码:嵌入式Tomcat 7与Tomcat相比较慢6

Tomcat tomcat = new Tomcat(); 
tomcat.setPort(port); 
tomcat.setSilent(true); 

tomcat.setBaseDir("."); 
tomcat.getHost().setAppBase(webappDir); 

tomcat.addWebapp(context, "");  
tomcat.start(); 

有其他人遇到这种或有提高性能的建议?我在Windows 7,Linux Mint和Ubuntu上运行测试。

+3

你* *只是平均启动时间更长? (对于服务器来说,这是一个非常狭窄的性能指标,通常预计会在几天,几周或几个月内没有重新启动......) – 2012-01-29 16:46:07

+0

我建议使用嵌入式Jetty代替。我没有尝试嵌入式Tomcat,但Jettu运行速度不够快。 – Anton 2012-01-29 16:46:51

+1

乔恩,它是嵌入式的,所以启动时间在这里很重要。人们希望嵌入式服务器比正常的服务器轻一些。 – 2012-01-29 17:18:57

回答

15

也许这是由于类路径扫描很慢,这是基于注释的Servlet 3.0配置所必需的。如果您不需要这些功能,请尝试将metadata-complete="true"添加到您的web.xml

+1

是的,这样做!启动时间缩短到6秒: – 2012-02-09 21:27:07

+0

也适用于我。很好的回答,谢谢。 – Danijel 2012-03-22 10:29:25

+1

这是否会完全禁用基于注释的配置?或者它只是禁用“扫描”,但基于注释的配置仍然有效? – ziggy 2012-12-26 22:49:00

5

这是怎么回事实际上看起来在web.xml头:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app metadata-complete="true" id="WebApp_ID" version="3.0"... 

一些更多的信息在这里:Tomcat and Servlet 3.0 Web Configuration