Программно получить maxPostSize Tomcat HTTP Connector в JSP - PullRequest
7 голосов
/ 09 октября 2010

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

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

Ответы [ 2 ]

5 голосов
/ 09 октября 2010

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

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}
3 голосов
/ 27 февраля 2015

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

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

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

...