热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从jbossweb看Tomcat之一

应用服务器技术讨论圈汇总并整理Tomcat深入分

前面这段时间,我们深入分析了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已经发生了变化)


这其实实际就是Tomcat的整体目录,bin目录,conf目录没有什么区别,对于lib目录其实也是一样:


但是区别实际就在于catalina.jar包中就有Jboss的修改


而对应的catalina包,也不是原来的对应tomcat的某个版本,以该版本为例,是基于tomcat6.0的早期版本来做的;

分析一下org.apache.coyote.http11包


可以看到该包中连NIO通道都没有,而且随便找一个类,Connector:


发现在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特性:


值得一提的是,最新版本的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的老版本的下载

  

  不过,对于该系列来讲,在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的对应情况:

 

  每一个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的企业版本:

  

    其目标定位在,企业级的大规模访问,高并发。

..

总结:

Jbossweb实际包装就是Tomcat,而新版本包装的是undertow,我们在后续会以Jbossweb作为视角来详解这两个web容器。

敬请期待。




推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 标题: ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
木瓜香皂a
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有