JBoss EAP 7 parameter size 변경
문제
INFO [stdout] (default task-5) javax.servlet.ServletException: UT000047: The number of parameters exceeded the maximum of 1000 ... INFO [stdout] (default task-5) Caused by: java.lang.IllegalStateException: UT000047: The number of parameters exceeded the maximum of 1000 INFO [stdout] (default task-5) at io.undertow.server.handlers.form.FormData.add(FormData.java:78) INFO [stdout] (default task-5) at io.undertow.server.handlers.form.FormData.add(FormData.java:68) INFO [stdout] (default task-5) at io.undertow.server.handlers.form.FormEncodedDataDefinition$FormEncodedDataParser.doParse(FormEncodedDataDefinition.java:172) INFO [stdout] (default task-5) at io.undertow.server.handlers.form.FormEncodedDataDefinition$FormEncodedDataParser.parseBlocking(FormEncodedDataDefinition.java:251) INFO [stdout] (default task-5) at io.undertow.servlet.spec.HttpServletRequestImpl.parseFormData(HttpServletRequestImpl.java:762) INFO [stdout] (default task-5) at io.undertow.servlet.spec.HttpServletRequestImpl.getParameter(HttpServletRequestImpl.java:636) INFO [stdout] (default task-5) at javax.servlet.ServletRequestWrapper.getParameter(ServletRequestWrapper.java:194) ...
위와같이 The number of parameters exceeded the maximum of 1000
에러가 발생하는 경우는 POST/GET 호출시에 전달되는 파라메터 갯수가 많은 경우 해당 에러가 발생한다. 파라메터 갯수의 기본값은 1000
이기 때문에 1000개가 넘어가는 파라메터를 전달하면 오류가 발생하는 것이다.
해결방법
http-listener
, ajp-listener
, https-listener
등 리스너의 max-parameters
값을 변경해주면 해결된다.
jboss-cli 명령어로 아래와 같이 적용해주도록 한다.
[standalone@localhost:9999 /] /subsystem=undertow/server=default-server/http-listener=default/:write-attribute(name=max-parameters,value=5000)
위의 명령어로 변경하게되면 설정파일 xml 내의 내용이 아래와 같이 변경된다.
<subsystem xmlns="urn:jboss:domain:undertow:3.1"> <buffer-cache name="default"/> <server name="default-server"> <http-listener name="default" max-parameters="2000" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> ...(snip).. </host> </server> ...(snip)..
max-parameters
수치는 무제한으로 설정할 수는 없으며 Integer.MAX_VALUE
값 까지 설정이 가능하다. 하지만 너무 높은값으로 설정할 경우 DDOS공격등에 취약해지므로 주의하도록 한다.
참조링크
로그인하면 댓글을 남길 수 있습니다.