sexta-feira, 15 de junho de 2012

Erro no Jetty de "Form too large"

Salve galera!
Hoje deparei com um erro em minha aplicação que ao rodar, dava o erro abaixo:


HTTP ERROR: 500
Form too large339783>200000
Caused by:


java.lang.IllegalStateException: Form too large339783>200000
 at org.eclipse.jetty.server.Request.extractParameters(Request.java:1476)
 at org.eclipse.jetty.server.Request.getParameterMap(Request.java:785)
 at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:177)
 at org.apache.struts2.dispatcher.mapper.DefaultActionMapper.handleSpecialParameters(DefaultActionMapper.java:351)
 at org.apache.struts2.dispatcher.mapper.DefaultActionMapper.getMapping(DefaultActionMapper.java:311)
 at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:370)
 at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1139)

Esse erro acontece porque o Jetty vem configurado para que o form tenha o tamanho de até 200000. E quando ultrapassa esse valor, estoura o erro de HTTP 500.
E pra variar, fiquei horas tentando descobrir o que fazer....
Mas, depois de muitas e muitas tentativas, consegui tirar a limitação do form. Mas chega de blablabla e
vamos ao que interessa.
Vá até o diretório em que você instalou o seu Jetty
Abra o arquivo Jetty.xml que se encontra dentro da pasta 'etc'.
Insira o código abaixo:


    <!-- ======================================================================= -->
    <!--             Set max form context size default is 200000 and -1 is undefined size                                --> 
    <!-- ======================================================================= -->
<Call class="java.lang.System" name="setProperty"> 
  <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>  
  <Arg>-1</Arg>  
</Call>

Eu tirei a limitação setando no Arg -1, mas se você preferir que seu form tenha um tamanho específico (alguns dizem que não é seguro deixar um valor indefinido) , é só setar o valor que você quiser dentro do Arg.
Pronto! Só reiniciar o seu Jetty e ele vai rodar legal.
Espero que tenha ajudado e até a próxima!
Um grande abraço;
Daniel Hideki...



Nenhum comentário:

Postar um comentário