JFinal修改Jetty MaxFormContentSize参数
@JFinal 你好,想跟你请教个问题:JFinal运行中出现java.lang.IllegalStateException: Form too large270468>200000查了下资料,说是Jetty的maxformContentSize参数错了。根据网上的说明添加了jetty-web.xml文件,运行时,Jfinal直接报Object of class 'org.eclipse.jetty.webapp.WebAppContext' is not Type of class'org.eclipse.jetty.webapp.WebAppContext'。请问,该如何解决,谢谢了。
附修改方法:http://blog.csdn.net/shixing_11/article/details/6996236
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
如果嫌修改类麻烦的话,直接反射调用一次配置即可,在JFinal.me().getServletContext()提供了访问通道
@Override
public void afterJFinalStart() {
super.afterJFinalStart();
if(JFinal.me().getServletContext().getClass().getName().equals("org.eclipse.jetty.webapp.WebAppContext$Context")){
try {
ServletContext ctx = JFinal.me().getServletContext();
Method getContextHandler = ctx.getClass().getMethod("getContextHandler", null);
Object handler = getContextHandler.invoke(ctx, null);
Method setMax = handler.getClass().getMethod("setMaxFormContentSize", int.class);
setMax.invoke(handler, 350 * 1024);
} catch (Exception e) {
e.printStackTrace();
}
}
}
不是继承,纯粹就是复制一份项目中的代码来实现!
回复
特指嵌入式jetty服务。
回复
老大哥,能不能贴一下完整代码啊?我弄一个类继承了jettyServer,也重写了他的start方法,但看了JFinal的源码,感觉还得重写JFinal启动JettyServer的方法。是需要这样实现吗?还有没有更加简洁的方法?
回复
我是直接新建了一个同包同名的类。直接盖了他的。
回复
源码就改了一句 webApp.setMaxFormContentSize("false"); 改为 webApp.setMaxFormContentSize(-1); // "false"));
回复
谢谢,我解决了!我把JettyServer.class官方原生的类复制了一份放到项目中直接修改了,按照您的方法实现了!比用xml的方案要好,用xml重修编译会报错!
重写com.jfinal.server.JettyServer
doStart 方法
添加webApp.setMaxFormContentSize(-1);
刚测试过,没有效果,依然报错。根据网上的换成Dorg.mortbay.jetty.Request.maxFormContentSize还是不行
可能不同版本参数名称不同
回复
求最佳答案 ~.~
直接加JVM参数 -Dorg.mortbay.http.HttpRequest.maxFormContentSize=-1
额,jetty迁到eclipse.org下了,参数名也变了~ 总之这个是通过Integer.getInteger方法去获取一个SysProp来指定这个值
谢谢@純白陰影的提示,用jd-gui查看了源碼,將參數改成-Dorg.eclipse.jetty.server.Request.maxFormContentSize=-1完美解決改問題。