先引用一段文字:来源于网络:
1 Jun 25, 2007 10:34:54 PM org.apache.tomcat.util.http.Parameters processParameters
2 WARNING: Parameters: Invalid chunk ignored. 相信很多人,在使用Tomcat中碰到过上面这个问题。我也为此苦恼过。现将解决办法,告诉大家及解决问题的一点感悟。
数次碰到这个问题没有解决后,促使我想到去看原代码,根据异常信息,我找到抛出异常的代码段。现将原代码引入到文章中。
1 if( nameEnd<=nameStart ) {
2 StringBuilder msg = new StringBuilder("Parameters: Invalid chunk "); 3 // No name eg ![]() ![]() 4 if (valEnd >= nameStart) { 5 msg.append('\''); 6 try { 7 msg.append(new String(bytes, nameStart, 8 valEnd - nameStart, DEFAULT_ENCODING)); 9 } catch (UnsupportedEncodingException e) { 10 // Should never happen ![]() 11 log.error("Unable to convert bytes", e); 12 } 13 msg.append("' "); 14 } 15 msg.append("ignored."); 16 log.warn(msg); 17 continue; 18 // invalid chunk - it's better to ignore 19 } 不知你注意到没,我在上面代码第3行的注释上,加上了下划线,相信你看到这句话时,知道应该做了。
对了,你猜对了。没有参数名称(例如,&=xx&aa=11),每个&后面没有参数名称,这样的情况发生后,将
触发这个异常。
注:这同样告诉我们一个问题。对于开源项目,如果你在搜索现有资料不能解决问题时,你可以尝试去看原代码,或许可以找到解决问题的办法。 当POST body 或 query-string 参数中包含'&=’、'&&’、'?&’或以'&’结束
字符串时出现警告: Parameters: Invalid chunk ignored. EG: 提交的URL为http://[localhost]:[8080]/[webapp]/main.do?¶m=1 正确的应该为http://[localhost]:[8080]/[webapp]/main.do?param=1 但是具体找到问题的地方并不在上述之列,是有个ajax的路径写的不对。 new Ajax.Request(
红色部分是不需要的,parameters参数里本身是会加这个?的,现在加了就相当于2个,tomcat6就会报警告~ 解决办法:
1、传了多个参数,有的没有用到
2、多个参数用&&连接(我老是这么写)改成一个&就OK了。 PS:以前用Tomcat5.0.X时,老是用两个&连接,没出现过这个Warning。用了6.X版本就出现了。 |
|