*
WebSphere与Tomcat 提交大数据的form表单 遇到的问题
1,遇到一次,struts2.1.8框架,websphere服务器,action传list集合到jsp页面显示,然后做了修改又从jsp页面传回给action,
数据有1.1万多条,提交时总是出错,如下图:
查找到RequestUtils.java所在的jar:/IBM/WebSphere/AppServer/plugins/com.ibm.ws.webcontainer.jar
反编发现,有限制每次request的最大参数是1万,MAX_PARAM_PER_REQUEST=10000;
确实如此,因为我提交了其他8个零散的参数,11600多条数据组成的list集合只传到了9992条,正好是1万条;
解决办法一:
避免页面传大数据量;
解决办法二:
如果非要传,可以为websphere定制属性:(以下来自网上,测试可行)
1 在管理控制台中,单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > Web 容器设置 > Web 容器。
2.在“其他属性”下面,选择定制属性。
3.在“定制属性”页面上,单击新建。
4.在设置页面上的
名称:com.ibm.ws.webcontainer.maxparamPerrequest(注意:这里都是小写,反编译jar可知)
值:-1 (-1代表无限大)
5.单击应用或确定。
6.单击控制台任务栏上的保存以保存配置更改。
7.重新启动服务器。
**
2,本地用Tomcat测试时,不报错,但是也是上传到后台9992条数据,后面的就取不到了,难道tomcat中也限制了?
是的,借用下网上的话(http://benni82.iteye.com/blog/846887)
tomcat知道自己处理不了了,什么也不干过去了
jett知道自己处理不了了,抛个IllegalStateException出来通知一下;
websphere知道自己处理不了,抛个IllegalArgumentException出来通知一下;
所以,才会有Tomcat虽然没取到数据,但是也不报错,
修改配置:(http://www.bubuko.com/infodetail-976418.html)
修改tomcat conf/server.xml文件,添加:
<Connector executor="tomcatThreadPool"
port="9080"
protocol="HTTP/1.1"
maxParameterCount="-1"
connectionTimeout="20000"
URIEncoding="UTF-8" />
maxParameterCount="-1" 表示无限制
至此,完整解决了Websphere和tomcat遇到的form表单提交大数据量的问题;
*