Программно получить maxPostSize HTTP-соединителя Tomcat в JSP

Я использую Tomcat 6 и хотел бы иметь возможность получить maxPostSize (определенный в HTTP-соединителе на сервере.xml) программно из JSP, чтобы я мог знать, какой максимальный размер загрузки файла.

есть ли способ сделать это?

2 ответов


предполагая, что у вас есть только один сервис Tomcat с одним разъемом, вы можете получить доступ к нему в сервлете:

int maxPostSize = ServerFactory.getServer().findServices()[0].findConnectors()[0].getMaxPostSize();

ServerFactory кстати org.apache.catlina.ServerFactory.

Примечание: это плотно-соединяет ваш код с Tomcat servletcontainer и ваш webapp не может быть повторно использован на других servletcontainers, возможно, даже не разные версии. Рассмотрите возможность настройки собственного параметра контекста в web.xml С тем же значением.

<context-param>
    <param-name>maxPostSize</param-name>
    <param-value>2097152</param-value>
</context-param>

затем вы можете доступ к нему в сервлете по

int maxPostSize = Integer.valueOf(getServletContext().getInitParameter("maxPostSize"));

или в JSP by

${initParam.maxPostSize}

в Tomcat7 класс ServerFactory исчез. По-видимому, можно получить ссылку на сервер, используя

org.apache.tomee.loader.TomcatHelper.getServer()

...который находится в org.апаш.openejb: tomee-загрузчик.