在用戶實(shí)際
環(huán)境的tomcat日志(localhost_log.2009-06-22.txt)看到下面這個(gè)錯(cuò)
引用:
2009-06-22 12:39:41 StandardWrapperValve[ajax]: Servlet.service() for servlet ajax threw exception
java.lang.IllegalStateException: Post too large
at org.apache.coyote.tomcat5.CoyoteRequest.parseRequestParameters(CoyoteRequest.java:2405)
at org.apache.coyote.tomcat5.CoyoteRequest.getParameter(CoyoteRequest.java:1073)
at org.apache.coyote.tomcat5.CoyoteRequestFacade.getParameter(CoyoteRequestFacade.java:265)
at org.ajaxanywhere.AAUtils.isAjaxRequest(AAUtils.java:34)
at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at com.thunisoft.summer.web.filter.CharsetFilter.doFilter(CharsetFilter.java:48)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
在另外一個(gè)catalina_log.2009-06-22.txt日志
文件中,有下面這句話
引用:
2009-06-22 12:39:41 CoyoteRequest Parameters were not parsed because the size of the posted data was too big. Use the maxPostSize attribute of the connector to resolve this if the application should accept large POSTs.
上網(wǎng)查了一下,說(shuō)是tomcat默認(rèn)接收的POST提交
數(shù)據(jù)最大為2M,如果沒(méi)有修改過(guò)配置post提交的數(shù)據(jù)超過(guò)這個(gè)就報(bào)上面的錯(cuò)了。這個(gè)配置在%tomcat-5.0.28%conf\server.xml中的我們用到的connector節(jié)點(diǎn)的屬性。其中tomcat的文檔是這么描述的
引用:
maxPostSize
The maximum size in bytes of the POST which will be handled by the container FORM URL parameter parsing. The feature can be disbled by setting this attribute to a value inferior or equal to 0. If not specified, this attribute is set to 2097152 (2 megabytes).
準(zhǔn)備復(fù)現(xiàn)
問(wèn)題,第一個(gè)想到的就是XX系統(tǒng)文書(shū)保存到
數(shù)據(jù)庫(kù),并且為ajax的post方式提交(文件上傳不會(huì)報(bào)這個(gè)錯(cuò))
代碼:
var map = new Map();
map.put("key", "fy.doceditor.updateDoc");
map.put("jzjd", jzjd);
map.put("caseType", caseType);
map.put("caseId", caseId);
map.put("docId", docId);
map.put("wsxh", wsxh);
map.put("doc", docDetail);
var query = new QueryObj(map,updated);
query.send();
所以創(chuàng)建了一個(gè)文書(shū),粘貼了一個(gè)8M的word文書(shū),點(diǎn)保存之后報(bào)js錯(cuò)。把上面這個(gè)docDetail保存成文件,發(fā)現(xiàn)大小為7.94 MB (8,332,134 字節(jié)),檢查日志有post too large錯(cuò)。
按照文檔描述,修改xml文件配置如下:
引用:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" maxPostSize="0"/>
問(wèn)題得到解決。
一般來(lái)說(shuō)大部分post提交都是沒(méi)有問(wèn)題的,但是還是要仔細(xì)考慮一下項(xiàng)目是否會(huì)出現(xiàn)這種情況,最好是修改一下tomcat的配置。有時(shí)候需要注意這個(gè)異常只會(huì)記錄在tomcat的日志文件中。
posted on 2009-06-22 17:36
歲月如歌 閱讀(1701)
評(píng)論(1) 編輯 收藏 所屬分類:
java