记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。
应用部署到weblogic下(Tomcat下无问题),filter执行时报错: 

java.lang.IllegalStateException: Cannot resize buffer - 299 bytes have already been written (Servlet 2.3, sec. 5.1)
at weblogic.servlet.internal.ServletResponseImpl.setBufferSize(ServletResponseImpl.java:346)
at weblogic.servlet.jsp.PageContextImpl.initialize(PageContextImpl.java:74)
at weblogic.servlet.jsp.PageContextImpl.<init>(PageContextImpl.java:110)
at weblogic.servlet.jsp.JspFactoryImpl.getPageContext(JspFactoryImpl.java:40)
at jsp_servlet.__index._jspService(__index.java:65)

原因:调用了response.sendRedirect()之后,再调用了filterChain.doFilter(request, response)

解决:修改代码,确保 sendRedirect 之后 return 或 doFilter 之前无 sendRedirect。


Jetty下,post 1个表单数据时报错: 

java.lang.IllegalStateException: Form too large210799>200000

原因: Jetty对form post data的大小有限制,默认为200000bytes

解决: 修改Jetty的默认限制值。



1. Jetty: 默认限制为200000bytes(约200KB).

修改默认限制值的方法如下:
参考:

http://blog.csdn.net/shixing_11/article/details/6996236

http://blog.csdn.net/blazingfire/article/details/6032540

 

1) 方法1:
在WEB-INF目录下新建一个jetty-web.xml文件,里面写如下内容
(即对maxFormContentSize重新赋值,-1表示不限制,正数值表示所允许的最大bytes):

 

Jetty 6:

Xml代码  收藏代码
  1. <?xml version="1.0"?>    
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">    
  3.    
  4. <Configure id="WebAppContext" class="org.mortbay.jetty.webapp.WebAppContext">    
  5.     <Set name="maxFormContentSize" type="int">-1</Set>    
  6. </Configure>    

 

Jetty 7:

Xml代码  收藏代码
  1. <?xml version="1.0"?>    
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">    
  3.    
  4. <Configure id="WebAppContext" class="org.eclipse.jetty.webapp.WebAppContext">    
  5.     <Set name="maxFormContentSize" type="int">-1</Set>    
  6. </Configure>    
 
2) 方法2: 在jvm的启动参数中加上org.mortbay.jetty.Request.maxFormContentSize参数值:
Java代码  收藏代码
  1. java -Dorg.mortbay.jetty.Request.maxFormContentSize=9000  XXX.java  

3) 方法3: 通过代码设置maxFormContentSize参数值:

Java代码  收藏代码
  1. System.setProperty("org.mortbay.jetty.Request.maxFormContentSize""900000");   
  
2. Tomcat: 默认限制为2097152bytes(2MB).
修改默认限制值的方法如下:
修改tomcat的配置文件$TOMCAT_HOME$/conf/server.xml,
找到里面的<Connector>节点,在该节点中添加"maxPostSize"属性,将该属性值设置成你想要的最大值(单位:byte,0表示不限制)。  

3. BES: 默认限制为2097152bytes(2MB).
修改默认限制值的方法如下:
通过BES控制台进行设置:独立实例->WEB容器->自定义属性 里添加 maxPostSize 属性(单位:KB,0表示不限制)。

4. Weblogic:是否有限制,暂时不详。


网站已经关闭评论