Программно получить 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.