Websphere,request最大参数限制,MAX_PARAM_PER_REQUEST

*

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表单提交大数据量的问题;

*

posted @ 2015-11-23 15:11  野鹤闲人  阅读(1514)  评论(0编辑  收藏  举报