Nesse artigo vou mostrar como permitir requisições de
grande tamanho para o JBoss EAP. Por padrão ele barra requisições maiores que
10Mb, o que para os dias atuais não é muita coisa, já que qualquer imagem ou
PDF facilmente passa esse tamanho.
No JBoss EAP, a partir da versão 7 foi incluído um
novo servidor web extremamente leve e de alto desempenho da própria RedHat
chamado Undertown, substituindo o Tomcat que rodava internamente no JBoss. No standalone.xml
encontramos seu submódulo como abaixo:
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener
name="default" socket-binding="http" enable-http2="false"/>
<ajp-listener
name="ajp" socket-binding="ajp" />
<host name="default-host"
alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container
name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content"
path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header
name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header
name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
E é nele que precisamos configurar a permissão para
grandes arquivos, dentro das tags <http-listener> e
<ajp-listener>. Nesse exemplo vou configurar para 1GB, mas você
precisa ver de acordo com sua necessidade.
<subsystem xmlns="urn:jboss:domain:undertow:4.0">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener
name="default" socket-binding="http" max-post-size="1073741824" enable-http2="false"/>
<ajp-listener
name="ajp" socket-binding="ajp" max-post-size="1073741824"
/>
<host name="default-host"
alias="localhost">
<location name="/" handler="welcome-content"/>
<filter-ref name="server-header"/>
<filter-ref name="x-powered-by-header"/>
</host>
</server>
<servlet-container
name="default">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content"
path="${jboss.home.dir}/welcome-content"/>
</handlers>
<filters>
<response-header
name="server-header" header-name="Server" header-value="JBoss-EAP/7"/>
<response-header
name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/>
</filters>
</subsystem>
Com isso o JBoss agora passa a permitir um grande
tráfego de dados, mas ainda é possível configurar outros controles como no
Spring por exemplo.