Ottieni a livello di codice maxPostSize del connettore HTTP Tomcat in un JSP
-
28-09-2019 - |
Domanda
Sto utilizzando Tomcat 6 e vorrei essere in grado di recuperare maxPostSize (definito nel connettore HTTP in server.xml) a livello di codice da un JSP in modo da poter sapere qual è la dimensione massima di caricamento del file.
C'è un modo per ottenere questo?
Soluzione
Supponendo che tu abbia un solo servizio Tomcat con un connettore, puoi accedervi in Servlet tramite:
int maxPostSize = ServerFactory.getServer().findServices()[0].findConnectors()[0].getMaxPostSize();
ServerFactory
è comunque org.apache.catlina.ServerFactory
.
Nota:questo accoppia strettamente il tuo codice al servletcontainer Tomcat e la tua webapp potrebbe non essere riutilizzabile su altri servletcontainer, possibilmente anche su versioni non diverse.Considera la possibilità di configurare il tuo parametro di contesto in web.xml
con lo stesso valore.
<context-param>
<param-name>maxPostSize</param-name>
<param-value>2097152</param-value>
</context-param>
Quindi puoi accedervi in Servlet tramite
int maxPostSize = Integer.valueOf(getServletContext().getInitParameter("maxPostSize"));
o in JSP da
${initParam.maxPostSize}
Altri suggerimenti
Nel Tomcat7 classe ServerFactory è andato. A quanto pare si dovrebbe essere in grado di ottenere il riferimento Server utilizzando
org.apache.tomee.loader.TomcatHelper.getServer()
... che risiede nella org.apache.openejb:. Tomee-loader