我正在使用Tomcat 6,并且希望能够从JSP中以编程方式检索maxPostSize(在server.xml中的HTTP连接器中定义),以便我可以知道最大文件上载大小是什么。
有办法解决这个问题吗?
答案 0 :(得分:5)
假设您只有一个带有一个连接器的Tomcat服务,那么您可以通过以下方式在Servlet中访问它:
int maxPostSize = ServerFactory.getServer().findServices()[0].findConnectors()[0].getMaxPostSize();
ServerFactory
顺便提一下org.apache.catlina.ServerFactory
。
注意:这会将您的代码紧密耦合到Tomcat servlet容器,并且您的webapp可能无法在其他servletcontainer上重复使用,甚至可能不是不同的版本。考虑在web.xml
中使用相同的值配置您自己的上下文参数。
<context-param>
<param-name>maxPostSize</param-name>
<param-value>2097152</param-value>
</context-param>
然后你可以通过
在Servlet中访问它int maxPostSize = Integer.valueOf(getServletContext().getInitParameter("maxPostSize"));
或在JSP中
${initParam.maxPostSize}
答案 1 :(得分:3)
在Tomcat7中,ServerFactory类消失了。显然,应该能够使用
获取服务器引用org.apache.tomee.loader.TomcatHelper.getServer()
...位于org.apache.openejb:tomee-loader。