Встроенный Tomcat 7 медленный по сравнению с Tomcat 6

Недавно я начал встраивать Tomcat 7 для своих интеграционных тестов, а не Tomcat 6, так как мне нужны некоторые из 7 функций, и это наш целевой контейнер. Производительность очень низкая по сравнению со встроенным Tomcat 6. Запуск сервера занимает порядка 20 секунд. Это код, который я использую:

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.


person Paul Grenyer    schedule 29.01.2012    source источник
comment
Вы просто имеете в виду, что время запуска больше? (Это довольно узкая мера производительности для серверов, которые обычно должны работать в течение нескольких дней, недель или месяцев без перезапуска...)   -  person Jon Skeet    schedule 29.01.2012
comment
Вместо этого я бы предложил использовать встроенный Jetty. Я не пробовал встроенный Tomcat, но Jettu работает достаточно быстро.   -  person Anton    schedule 29.01.2012
comment
Джон, он встроен, поэтому здесь важно время запуска. Можно было бы надеяться, что встроенный сервер был несколько легче обычного.   -  person Paul Grenyer    schedule 29.01.2012
comment
Умар, да, Jetty хороша и быстра, но не так хороша. Мне, вероятно, понадобится достойная поддержка JSP и поддержка красивых лиц. Prettyfaces — основная причина перехода с 6 на 7. — Пол Гренье только что редактировал.   -  person Paul Grenyer    schedule 29.01.2012


Ответы (2)


Возможно, это происходит медленно из-за сканирования путей к классам, которое требуется для настройки Servlet 3.0 на основе аннотаций. Если вам не нужны эти функции, попробуйте добавить metadata-complete="true" к вашему web.xml.

person axtavt    schedule 29.01.2012
comment
Ага, так и получилось! Время запуска сократилось до 6 секунд: - person Paul Grenyer; 10.02.2012
comment
Будет ли это полностью отключать конфигурацию на основе аннотаций? Или он просто отключает «сканирование», но конфигурация на основе аннотаций по-прежнему будет работать? - person ziggy; 27.12.2012

Вот как это на самом деле выглядит в заголовке web.xml:

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

Дополнительная информация здесь: Tomcat и веб-конфигурация Servlet 3.0

person Danijel    schedule 22.03.2012