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