Tomcat 8.5.x版本升级变化

1. 其中一些重要变化(对HTTP2,SSL支持的改动较多)

<1> 不再提供对HTTP BIO,AJP BIO的支持;
<2> 重构HTTP upgrade与AJP实现,减少重复;
<3> 支持HPACK header encoding与decoding;
<4> 增加JSSE的SSL engine,同时支持ALPN;
<5> 支持HTTP/2 server push;
<6> 不再支持Comet;
<7> 对不合法的HTTP method名字直接拒绝并返回400;
<8> AJP连接处理异步请求时,确保请求处理完成再继续处理下一个请求;
<9> 提高对HTTP/2 stream reset的处理;
<10> 支持64K的HTTP/2 header table size;
<11> 可以限制每个request的cookie大小;
<12> 可以通过配置maxConcurrentStreamExecution限制HTTP/2单个连接的并发stream数量;

2. Connector变化

不再支持BIO,支持NIO。如果细究会发现Tomcat有两个NIO Connector,一个是Http11NioProtocol,另一个是Http11Nio2Protocol。
如果配置Connector不指定class name,而是指定协议。那么如果没有配置APR,Tomcat会使用Http11NioProtocol。
为什么不使用NIO2,一看感觉像是加强版的NIO一样??其实两个是不同的东西。NIO是reactor模式,平常说的基本是只这个,比如说典型的Netty便是NIO扩建。NIO2则不同,是preator模式,是async io。async io是指client端只需提交请求,由操作系统来负责在事件就绪后回调应用逻辑。事实上,目前只有Window在OS级别提供了对async io的支持,也即IOCP,在Linux还是要通过select、poll、epoll等来实现这个机制。
所以一般来说,不需要使用NIO2。当然,也可能有些场景就适合使用NIO2,不过目前来说很少。

3. 其它问题

<1> cache尺寸不足
org.apache.catalina.webresources.Cache.getResource Unable to add the resource at [xxx] to the cache because there was insufficient free space available after evicting expired cache entries – consider increasing the maximum size of the cache
Tomcat默认cache尺寸是10M。新版本中,当evict以后仍没有空间存放新的数据时,则打印WARN信息。当然,不影响应用。
解决方法见:http://stackoverflow.com/questions/26893297/tomcat-8-throwing-org-apache-catalina-webresources-cache-getresource-unable-to


如果未说明,本Blog中文章皆为原创文章,请尊重他人劳动,转载请注明: 转载自jmatrix

本文链接地址: Tomcat 8.5.x版本升级变化

(注:一般引用了,我都会添加引用,如果有侵权的请联系我)



This entry was posted in 日常文章 and tagged . Bookmark the permalink. Follow any comments here with the RSS feed for this post. Trackbacks are closed, but you can post a comment.