2012-01-29 69 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