Как настроить максимальный размер пула сервлетов, реализующих SingleThreadModel? - PullRequest
1 голос
/ 28 июля 2011

У меня проблема с тем, что максимальный размер пула сервлета SingleThreadModel на Tomcat 5.5 ограничен 20 экземплярами.Я не знаю, где настроить его в Tomcat 5.5.

Мой HTTP-коннектор объявлен следующим образом:

<Connector port="8090" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="100"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />

Знаете ли вы, где я мог это настроить?

1 Ответ

4 голосов
/ 28 июля 2011

Насколько я понимаю, это не настраивается с помощью XML.

Однако программно настраивается с помощью StandardWrapper#setMaxInstances(). Вы можете сделать это в методе init() вашего сервлета, реализующего SingleThreadModel. Я протестировал его здесь на Tomcat 7, и он отлично работает.

@Override
public void init() throws ServletException {
    try {
        Field wrappedConfig = StandardWrapperFacade.class.getDeclaredField("config");
        wrappedConfig.setAccessible(true);
        StandardWrapper standardWrapper = (StandardWrapper) wrappedConfig.get(getServletConfig());
        standardWrapper.setMaxInstances(100);
    } catch (Exception e) {
        throw new ServletException("Failed to increment max instances", e);
    }
}

Теоретически это не будет работать только с экземпляром Tomcat, который находится вне вашего контроля и может иметь некоторую ограничительную политику доступа для определенных классов.

...