2012-01-29 2 views
10

필자는 최근 Tomcat 6 대신 7 가지 기능을 필요로하므로 통합 테스트를 위해 Tomcat 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

당신은 * 단지 * 더 이상 시작 시간을 의미합니까? (다시 시작하지 않고 며칠, 몇 주 또는 몇 달 동안 정상적으로 작동 할 것으로 기대되는 서버의 성능은 매우 좁은 수치입니다 ...) –

+0

대신 내장 된 Jetty를 사용하는 것이 좋습니다. 나는 임베디드 Tomcat을 시도하지 않았지만 Jettu는 충분히 빠르게 실행되었다. – Anton

+1

Jon, 임베디드되어 있으므로 시작 시간이 중요합니다. 하나는 임베디드 서버가 정상적인 서버보다 다소 가벼운 것을 기대할 수 있습니다. –

답변

15

아마도 Servlet 3.0의 주석 기반 구성에 필요한 클래스 경로 검색 때문에 속도가 느릴 수도 있습니다. 이러한 기능이 필요하지 않은 경우 web.xmlmetadata-complete="true"을 추가하십시오.

+1

그래, 그랬어! 시작 시간이 6 초로 단축되었습니다. –

+0

나를 위해 작동합니다. 좋은 대답, 고마워. – Danijel

+1

이렇게하면 주석 기반 구성이 완전히 비활성화됩니까? 또는 '스캐닝'을 비활성화해도 주석 기반 구성은 계속 작동합니까? – ziggy

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