前面这段时间,我们深入分析了Tomcat的前端组件,这个阶段,我们以Jbossweb的视角来看看jboss是怎么封装Tomcat的。
1.jbossweb项目是什么
来看一段 http://jbossweb.jboss.org/ 中的最开头的描述
What is JBoss Web
JBoss Web Server is an enterprise ready web server designed for medium and large applications, based on Tomcat.
JBoss Web a component of the JBoss Application Server, there are no more standalone version of JBoss Web you need the Application Server to get the Servlet/JSP container.,
JBoss Web Server provides organizations with a single deployment platform for Java Server Pages (JSP) and Java Servlet technologies, PHP, and CGI. It uses a genuine high performance hybrid technology that incorporates the best of the most recent OS technologies for processing high volume data, while keeping all the reference Java specifications.
分析得出,Jboss web实际就是以Tomcat为基础,集成到Jboss的web容器。
我们可以拿一个实际的下载Jboss web 2的目录进行分析:(Jbossweb 3已经发生了变化)
![](https://img6.php1.cn/3cdc5/9921/2be/60ed60ce6b3b025c.png)
这其实实际就是Tomcat的整体目录,bin目录,conf目录没有什么区别,对于lib目录其实也是一样:
![](https://img6.php1.cn/3cdc5/9921/2be/4f83cb202a67949d.png)
但是区别实际就在于catalina.jar包中就有Jboss的修改
![](https://img6.php1.cn/3cdc5/9921/2be/bac8c292b2e1b946.png)
而对应的catalina包,也不是原来的对应tomcat的某个版本,以该版本为例,是基于tomcat6.0的早期版本来做的;
分析一下org.apache.coyote.http11包
![](https://img6.php1.cn/3cdc5/9921/2be/7603a54e1efa4267.png)
可以看到该包中连NIO通道都没有,而且随便找一个类,Connector:
![](https://img6.php1.cn/3cdc5/9921/2be/5dccc97d90923add.png)
发现在catalina类也是侵入式的修改。
通过上面的分析,可以总结得出,jbossweb实际是基于Tomcat来做的,在Tomcat的某个版本中,加上jboss自己的特性。
而jbossweb的特点在于优化了性能,可以从几点来看:
a.基于jboss自己的log系统,优化了原有Tomcat的log
b.采用jboss-native,对接APR和Openssl,而彼时jvm效率较低,这种方法相当于让Tomcat前端能“享受”OS的最高级的优化特性
c.修改了lifecycle部分,优化了Tomcat组件启动和停止,减少了线程消耗
d.重新梳理了deploy的过程,在优化了原有的tomcat部署部分,加了很多ee特性:
![](https://img6.php1.cn/3cdc5/9921/2be/da076940096a6952.jpeg)
值得一提的是,最新版本的JbossWeb,因为Jboss社区已经有了Wildfly,这个Wildfly是基于undertow的前端框架,相当于和Tomcat一个层级的Web容器,因而JbossWeb的大方向已经转向undertow的包装,并且在Wildfly的新版本中继续提供web请求访问的支撑。
而我们关注的视角是,以tomcat为基础,看看JbossWeb在Tomcat版本的修改和变化,对于新版本的Wildfly和undertow,在后续的篇章中会作为详细阐述的重点,不在这个系列之中。
2.jboss各种版本
因为Jboss的版本比较众多,这里提一下Jboss的各个版本。
a.Jboss Application Server,俗称Jboss AS,这个是最常见的,Jboss的JAVA EE应用服务器,是开源的版本
http://jbossas.jboss.org/downloads.html 这个链接就是 Jboss AS的老版本的下载
![](https://img6.php1.cn/3cdc5/9921/2be/16e557abcbf4ed07.jpeg)
不过,对于该系列来讲,在Jboss AS 7之后,Jboss社区推出了Wildfly,改变了原有的Jboss的架构,地址在 http://www.wildfly.org/
这个Wildfly不单单对原来的Jboss整体架构的一次革新,而且对其web容器部分不再依赖于tomcat,转而自行研发了undertow,用以替代Tomcat的前端。
b.Jboss Enterprise Application Server, 俗称EAP
这个是企业级的版本,与Jboss AS相差不大,很多模块几乎是一样的,但在企业级的功能上做了一些微调。
下载的地址为:http://www.jboss.org/products/eap/download/
我们可以看看Jboss EAP 6的对应情况:
![](https://img6.php1.cn/3cdc5/9921/2be/1ceb8a4cb035b470.jpeg)
每一个EAP的版本实际上对应的是Jboss AS的版本,而对于Jboss AS中国的模块版本,也可以对应上。
对于Jboss EAP 6之后,再2016年5月份刚刚发布,其实际集成的内容已经转为了Wildfly了,对于原来的Jboss AS 系列不再支持了;
c.Jboss Web Server,JWS系列
在前面一节分析过的,Jboss web其实分为两种模式,一种是可以直接运行的,相当于在tomcat中加了jboss的很多优化特性,
而另外一种,就是直接集成到Jboss AS中的;
下载地址:http://www.jboss.org/products/webserver/download/
d.EWS,相当于JWS的企业版本:
![](https://img6.php1.cn/3cdc5/9921/2be/2792a382a39b5829.jpeg)
其目标定位在,企业级的大规模访问,高并发。
..
总结:
Jbossweb实际包装就是Tomcat,而新版本包装的是undertow,我们在后续会以Jbossweb作为视角来详解这两个web容器。
敬请期待。