설문 조사 폼을 만들이 있어서 작업 중에 설문 조사의 질문과 선택 옵션의 수는 가변적이므로 Parameter 컬렉션을 사용했다. 작업을 마무리 한 후 정상적으로 동작하는 지 테스트를 한 후 서버에 배포했다.


그런데.


이른바 "내 컴퓨터에서는 잘 되는데요?" 문제가 발생했다.


그렇다. 테스트를 할 때는 아무리 많은 질문과 옵션을 추가해도 잘 동작하던 것이, 서버에스는 IndexOutOfBound 예외를 내면서 설문이 제대로 처리되지 않는 문제가 발생했다.


설문 조사를 올리시는 분께서는 "음.. 7개가 넘어가면 설문 내용이 없어져요."라고 했고, 나는 "그럴리가 없다! 그 부분에 있어서 내 로직이 틀릴 리가 없다!" 라고 했다.

무지하면 용감하다더니, 어찌도 그리 당당할 수 있었을까? 다시 생각하니 부끄럽다.


서버에 배포된 설문 조사 폼을 확인해 보니, 정말 7개 이상으로 질문을 추가하면 죽는 것이 아닌가? 똑같은 설문 내용으로 내 컴퓨터(개발 컴퓨터)에서 테스트를 하니 "내 컴퓨터에서는 잘 된다."..


이 때까지는 자바스크립트로 설문 내용을 추가하는 부분에 이상이 있을 것으로 예상했다. 그런데 역시 이때까지는 Integer의 범위를 벗어나는 것도 아니고, 왜 하필 7개일까? 라며 이상하게만 생각하고는 자바스크립트 부분을 확인해 봤지만, 역시 이상은 없었다.


그러다 문득 톰캣 이 자식이 방해 공작을 하는 것이 아닐까 하는 생각에

"tomcat post form input limit length"를 키워드로 검색하니 한 블로그 글이 검색됐다.

그리고 그 글에는 내 문제의 원인이 무엇인지 명확하게 나와있었다. 그렇다. 파라미터의 수를 제한하는 설정이 있었던 것이다.


테스트 서버의 톰캣 설정은 그 파라미터 갯수 제한이 무한대라서 파라미터 갯수의 제한이 있다는 걸 모르는 상태에서는 그런 문제가 발생할 지 전혀 예측할 수 없었고,

실서버에서는 maxParameterCount="50" 으로 50개의 제한이 있었다.


질문 하나를 구성하는 속성은 제목, 질문 타입, 옵션 5개로 7개였으니, 톰캣이 수용할 수 있는 최대 질문의 수는 7개가 되는 것이고, 그 수 이상이 되면 서버가 빵~ 예외를 터뜨린다. 여태까지 파일 업로드 크기의 제한이 있는 줄은 알았지만, 파라미터의 수에 제한이 있을 줄은 몰랐다. 폼 파라미터의 갯수 및 크기 제한을 하는 설정은 아래와 같다.


server.xml 파일


maxParamterCount 속성은 폼 파라미터의 최대 수이고, maxPostSize는 폼의 최대 전송 용량(byte)이다. 값을 -1로 하는 경우 제한을 두지 않도록 한다.



"내 컴퓨터에서는 잘 되는데요?"

"님 컴퓨터에서도 잘 돌아가요"가 될 수 있도록 내가 사용하는 것들을 잘 알고 써야겠다.

Apache Commons HttpClient 라이브러리를 찾을 수가 없다!

자바 표준 라이브러리의 Http관련 클래스를 쓰려고 찾다보니 예제 소스가 아파치 프로젝트의 HttpClient를 사용하는게 대부분이었다.

패키지는 org.apache.commons. httpclient

그런데 아무리 찾아봐도 아파치 프로젝트 홈페이지에서는 저 패키지의 라이브러리를 찾을 수가 없다 -_ - 이곳저곳, 말도 안되는 라이브러리 받아서 내용 보고.. 한참을 돌아다니다가 HttpComponents 라이브러리 소개 내용을 보다가 눈에 걸리적 거리는게 있었는데...

HttpComponents Client is a successor of and replacement for Commons HttpClient 3.x. Users of Commons HttpClient are strongly encouraged to upgrade.


"HttpComponents Client는 Commons HttpClient 3.x 의 대체입니다. Commons HttpClient 유저들은 업그레이드 할 것을 강력히 추천합니다." 

네 그렇습니다. commons의 HttpClientHttpComponents
대체 되었습니다.

근데 왜 HttpComponents 홈페이지의 예제 코드는 아직도 commons를 사용하고 있냐고... 괜히 이것 때문이 더 헷갈렸다.


혹시나 HttpClient 라이브러리를 아파치 홈페이지에서 찾고 계신 분은
Http Components 라이브러리를 받으시면 되겠습니다.
그리고 commons를 찾고 계시는 분들을 위해 링크를 걸어둡니다.

'마음이 뛰다' 카테고리의 다른 글

인생은 재밌다.  (0) 2011.09.10
막막 룰루랄라.  (0) 2011.08.26
롬업 후 APN 설정  (0) 2011.08.23
DHD LeeDroid 롬업, 커널업 완료  (0) 2011.08.22
왜 대체 NullPointerException이 뜨는거야!  (0) 2011.08.22

+ Recent posts