结论两句话:
tomcat知道自己处理不了了,什么也不干过去了
jett知道自己处理不了了,抛个IllegalStateException出来通知一下
jetty默认允许的content-length=200×1000
org.eclipse.jetty.server.Request
public void extractParameters()
{
if (_baseParameters == null)
_baseParameters = new MultiMap(16);
if (_paramsExtracted)
{
if (_parameters==null)
_parameters=_baseParameters;
return;
}
_paramsExtracted = true;
....
// handle any _content.
String encoding = getCharacterEncoding();
String content_type = getContentType();
if (content_type != null && content_type.length() > 0)
{
content_type = HttpFields.valueParameters(content_type, null);
if (MimeTypes.FORM_ENCODED.equalsIgnoreCase(content_type) &&
(HttpMethods.POST.equals(getMethod()) || HttpMethods.PUT.equals(getMethod())))
{
int content_length = getContentLength();
if (content_length != 0)
{
try
{
int maxFormContentSize=-1;
if (_context!=null)
maxFormContentSize=_context.getContextHandler().getMaxFormContentSize();
else
{
Integer size = (Integer)_connection.getConnector().getServer().getAttribute("org.eclipse.jetty.server.Request.maxFormContentSize");
if (size!=null)
maxFormContentSize =size.intValue();
}
if (content_length>maxFormContentSize && maxFormContentSize > 0)
{
throw new IllegalStateException("Form too large"+content_length+">"+maxFormContentSize);
}
InputStream in = getInputStream();
// Add form params to query params
UrlEncoded.decodeTo(in, _baseParameters, encoding,content_length<0?maxFormContentSize:-1);
}
catch (IOException e)
{
if (Log.isDebugEnabled())
Log.warn(e);
else
Log.warn(e.toString());
}
}
}
}
....
}
}
jetty修改content-length方法
<Configure id="Server" class="org.eclipse.jetty.server.Server">
...
<Call name="setAttribute">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg><SystemProperty name="org.eclipse.jetty.server.Request.maxFormContentSize" default="200000"/></Arg>
</Call>
...
</Configure>
启动方式
java -jar start.jar -Dorg.eclipse.jetty.server.Request.maxFormContentSize=600000
还有另外一种配置方式
<Call class="java.lang.System" name="setProperty">
<Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg>
<Arg>400000</Arg>
</Call>
tomcat默认允许的content-length=2×1024×1024
org.apache.catalina.connector.Request
protected void parseParameters() {
......
if (!("application/x-www-form-urlencoded".equals(contentType)))
return;
int len = getContentLength();
if (len > 0) {
int maxPostSize = connector.getMaxPostSize(); // tomcat默认大小2*1024*1024
if ((maxPostSize > 0) && (len > maxPostSize)) {
if (context.getLogger().isDebugEnabled()) {
context.getLogger().debug(
sm.getString("coyoteRequest.postTooLarge"));
}
return; // 内容超长则直接返回,jetty会抛出IllegalStateException
//Parameters 对象没有内容
}
.....
}
public Map<String, String[]> getParameterMap() {
if (parameterMap.isLocked())
return parameterMap;
Enumeration<String> enumeration = getParameterNames();
while (enumeration.hasMoreElements()) {
String name = enumeration.nextElement();
String[] values = getParameterValues(name);
parameterMap.put(name, values);
}
parameterMap.setLocked(true);
return parameterMap;
}
public Enumeration<String> getParameterNames() {
if (!parametersParsed)
parseParameters();
return coyoteRequest.getParameters().getParameterNames();
}
分享到:
相关推荐
该包适用于maven新手入门,因为作者本身也是一员maven新手,里面包括了maven的下载包,插件包,插件的配置,环境变量的设置,maven项目建立的详解及运行,里面集成了jetty,tomcat,struts2,当然还包括了直接运行jar包...
解决Geoserver在windows环境使用geoserver安装程序 和 windows或linux环境tomcat war包安装后的服务访问跨域问题。
1. Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。 不同点: 1. 架构比较 Jetty的架构比Tomcat的更为简单 Jetty的架构是基于Handler来实现的,主要的扩展功能都可以用...
websocket+tomcat+jetty+netty
这边主要是对tomcat和jetty两个容器的相关实现原理进行整理,主要资源来自网络,作者只是起到整理的作用,这一块也是希望分享出去,给即将面临面试的同学一些帮助,希望所有人都能入职心仪的公司。
从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式.doc
定时监控jetty,tomcat 等各种容器端口,自动重启服务,端口可以自己配置windows 的bat 脚本
NULL 博文链接:https://lovebeaners.iteye.com/blog/1159235
构建的maven-spring-springmvc-mybatis-mysql-jetty(tomcat)小demo,可以在jetty和tomcat上跑起来,实现了最基本的请求响应的一整套流程。留存一下,为以后搭建新项目用。
tomcat,jetty,undertow性能测试.xlsx
本压缩包包含了不同平台——windows以及linux最新的tomcat版本,(包含:tomcat-5.5.36、tomcat-6.0.37、tomcat-7.0.47)。 和jetty-distribution-9.0.6.v20130930。 供java web开发人员去下载
NULL 博文链接:https://fanshuyao.iteye.com/blog/2414809
开发部署用的服务器,其中包含了tomcat 和 jetty 两款服务器
jetty-6.1.9 jetty-util-6.1.9 servlet-api-2.5-6.1.9 全网搜索dojox.cometd实现WEBQQ,没有可以运行的源码包项目,搞了五天,分享给大家,真实可用,jar包就找了好久,花了5分,搞了5天5分。共10分。 付原作者地址...
Servlet引擎:JBoss与Tomcat、Jetty协同工作
jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...
想直接通过域名活ip访问xacs或者准备集群配置的童鞋,往这看
Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于...
弄懂了Tomcat和Jetty的原理,JavaWeb开发对你来说就毫无秘密可言。 JVMGC原理及调优的基本思路: 如何监控Tomcat的性能? Tomcat线程池和I/O的并发调优 Tomcat的内存溢出原因分析及调优 Tomcat拒绝连接原因分析及网络...
解决jetty8、jdk1.6环境下的ssl问题,示服务器的瞬时 Diffie-Hellman 公共密钥过弱,可以通过设置如下参数解决