Jetty和Tomcat 配置上的一些异同
Jetty和Tomcat在有些关键地方的配置有一些异同,这里简单列举下:
- 字符编码
Jetty 7 get URI queryString 编码默认使用 UTF-8 编码,可以通过 request.setAttribute(“org.eclipse.jetty.server.Request.queryEncoding”,”GBK”) 设定查询参数的编码,如果不设定则默认读取系统属性 -Dorg.eclipse.jetty.util.URI.charset=GBK 的编码,如果系统属性也没有设定,则默认为 UTF-8 。
POST 参数默认使用 Content-type 中的 Charset 编码,如果 Charset 没有,则默认使用 UTF-8 编码,当然可以在使用之前使用 request.set CharacterEncoding 设定编码。
Tomcat get 编码默认是 ISO-8859-1 ,可以通过 Connector 上 URIEncoding =GBK 设定编码,也可以强制 useBodyEncodingForURI =true 让 URI 和 body 编码一致。
- Connector配置
Tomcat Connector 配置参数和 jetty 的参数对应关系
Tomcat |
Jetty |
原生socket |
备注 |
acceptCount |
AcceptQueueSize |
Backlog ,默认 50 |
连接被 accept 前允许等待的连接数 |
connectionLinger |
SoLingerTime |
soLinger |
|
connectionTimeout |
MaxIdleTime |
SoTimeout |
对 ServerSocket 来说是 accept 最大阻塞时间,对 Socket 来说是 read 调用阻塞时间 |
enableLookups |
ResolveNames |
是否反查 getRemoteHost() |
是否反查客户机主机名 |
|
|
|
|
|
|
|
|
- Tomcat 特有增强性能的APR
Tomcat connector 配置 AJP/1.3 、 HTTP/1.1 可能会使用 APR ,如果类路径中 org.apache.tomcat.jni.Library 可以用,那么则会使用 APR. 其实 Library 是在默认 加载 tcnative-1.so 和libtcnative-1.so动态本地连接库来增强其性能,经过测试,APR大概给Tomcat带来约15%的性能提升,的确很给力。
假想: Jetty如果用上这个本地库性能会有多大提升呢?最近我在进行Jetty支持APR的Connector迁移测试,我们拭目以待!