Программно получить maxPostSize Tomcat HTTP Connector в JSP

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

Есть ли способ получить это?

2 ответа

Решение

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

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

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

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

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

Затем вы можете получить доступ к нему в сервлете по

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

или в JSP

${initParam.maxPostSize}

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

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

... который находится в org.apache.openejb:tomee-loader.

Другие вопросы по тегам