首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Tomcat,JBoss和Glassfish有什么区别?

Tomcat,JBoss和Glassfish有什么区别?

提问于 2017-12-21 09:37:35
回答 2关注 0查看 1.4K

我正在开始研究Enterprise Java,下面的书提到它将使用JBoss。Netbeans附带Glassfish。我过去曾经使用过Tomcat。

这三个方案有什么区别?

回答 2

不知雨

发布于 2017-12-21 09:40:29

概述

Web容器是一种服务调用的规范,J2EE运用了大量的容器和组件技术来构建分层的企业应用。在J2EE规范中,相应的有WEB Container和EJB Container等。

Web容器给处于其中的应用程序组件(JSP,SERVLET)提供环境,是的JSP,SERVLET直接与容器中的环境变量打交道,而不必关注其他系统问题。

Web容器更多的是与HTTP的请求打交道,而EJB容器不是,它更多的是跟数据库其他服务打交道。

Web服务器

Web服务器可以处理HTTP协议,当Web服务器接收到一个HTTP请求,就会返回一个HTTP响应。

Web服务器可以针对静态页面或者图片的请求进行跳转,或者把动态响应委托给其他一些程序,如CGI,JSP,servlets,Asp,Javascript或者其他服务器端技术。

Web服务器仅仅提供一个可执行服务器端环境和返回响应的环境,不涉及其他技术。

Apache

是简单的web服务器,速度快,在大型网站中,常与应用服务器配合部署,仅支持静态网页。

Nginx

著名的HTTP服务器,速度极快,支持负载均衡。

应用程序服务器

根据定义,作为应用程序服务器,要求可以通过各种协议(包括 HTTP 协议)把商业逻辑暴露给(expose)客户端应用程序。应用程序使用商业逻辑就像你调用对象的一个方法或过程(语言中的一个函数)一样。

Tomcat

Tomcat仅是个HTTP服务器,以及Servlet/JSP API的执行器,也就是所谓的servlet容器,不支持EJB,JMS。

相对于JBOSS来说较为轻量级,实现的功能也较少,不能完整的支持最新的JavaEE标准,适用于较为简单的Web应用,简单易用。

JBOSS

JBOSS是开源应用服务器,JBOSS与Tomcat不同,它提供了更多开箱即用的功能特性,也更重,它完整的实现了J2EE 6。

那么应该怎样选择Tomcat或者是JBOSS,如果对大企业来说,JBOSS提供了额外的如下功能:

JMS messaging for asynchronous integration

Web Services engine (JAX-WS and/or JAX-RS)

Management capabilities like JMX and a scripted administration interface

Advanced security, e.g. out-of-the-box integration with 3rd party directories

EAR file instead of "only" WAR file support

all the other "great" Java EE features I can't remember :-)

Glassfish

Oracle开发的官方Java容器,支持最新的特性,有自己的web容器(不是tomcat)。

选型

主要根据应用的规模和需求来确定,如果仅仅是简单应用,不需要支持负责的EJB或者JMS等特性,选择简单易用的Tomcat是一个好选择。如果需要更多J2EE的特性,则需要考虑使用Jboss这种全功能服务器了。

最爱开车啦

发布于 2017-12-21 09:39:19

一、缘由:

  新公司平台是纯Java架构,有用到Java Web(JSP)、Java 业务(EJB)、Nginx、、Websphere MQ、Mysql这样。大家知道java是跑在容器里的,

这里的业务要用到EJB故选用了Glassfish容器。

  EJB是什么?EJB是一个服务器端的组件模型,可以部署分布式应用程序。J2EE规范这么说:Enterprise Java Bean (EJB )组件是运行在服务器端的业务组件;

另外Java Servlet和Java Server Pages(JSP)是运行在服务端的web组件。

  那么常见的web容器(应用服务器)又有什么区别呢?下面慢慢道来。

二、详解:

1、Web容器

  Web容器是一种服务调用的规范,J2EE运用了大量的容器和组件技术来构建分层的企业应用。在J2EE规范中,相应的有Web Container和EJB Container等。

  Web容器给处于其中的应用程序组件(JSP、Servlet)提供环境,JSP、Servlet直接与容器中的环境变量打交道,而不必关注其他系统问题。

  Web容器更多的是与HTTP的请求打交道,而EJB容器不是,它更多的是跟数据库其他服务打交道。

2、Web服务器

  Web服务器可以处理HTTP协议,当Web服务器收到一个HTTP请求,就会返回一个HTTP响应。

  Web服务器可以针对静态页面或者图片的请求进行跳转,或者把动态响应委托给其他一些程序,如CGI、JSP、Servlet、ASP、JavaScript或者其他服务端技术。

  Web服务器仅仅提供一个可执行服务器端环境和返回响应的环境,不涉及其他技术。

1)Apache

  是简单的HTTP服务器,速度快,在大型网站中,常与应用服务器配合部署,仅支持静态页面。

2)Nginx

  是著名的HTTP服务器,速度快,支持负载均衡。

3、应用程序服务器(Web容器)

  作为应用服务器,要求可以通过各种协议(包括HTTP协议)把商业逻辑暴露给客户端应用程序。应用程序使用商业逻辑就像你调用对象的一个方法或过程一样。

1)Tomcat

  Tomcat仅是个HTTP服务器,是Apache鼎力支持的Java Web服务器,是Servlet/JSP API的执行器,也就是所谓的Servlet容器,不支持EJB、JMS。

相对于JBOSS来说较为轻量级,实现的功能也较少,不能完整的支持最新的JavaEE标准,适用于较为简单的Web应用。

2)JBOSS

  JBOSS是开源Java EE应用服务器,它不但是Servlet容器,而且是EJB容器,它提供了更多开箱即用的功能特性,也更重,它完整的实现了J2EE 6。

3)Glassfish

  Glassfish是Oracle 开发的官方Java EE容器,,也是同时支持Servlet和EJB,支持最新的特性,有自己的web容器,支持集群,支持热部署。

三、区别及选型:

1、区别:

  Tomcat只是一个HTTP服务器和Java servlet容器。 JBoss和GlassFish是完整的Java EE应用程序服务器,包括EJB容器和该堆栈的所有其他功能。

另一方面,Tomcat具有更轻的内存占用(约60-70 MB),而那些Java EE服务器的权重在几百兆。 Tomcat对于简单的Web应用程序或使用诸如Spring

之类的不需要完整Java EE服务器的框架的应用程序非常流行。管理Tomcat服务器可以说是更容易,因为有较少的移动部件。

但是,对于确实需要完整的Java EE堆栈(或至少更多的部分,可以轻松地固定到Tomcat)的应用程序... JBoss和GlassFish是两个最流行的开源产品

(第三个是Apache Geronimo ,在其上构建IBM WebSphere的免费版本)。 JBoss有一个更大和更深的用户社区,和一个更成熟的代码库。

但是,JBoss在实现当前Java EE规范方面远远落后于GlassFish。此外,对于那些喜欢基于GUI的管理系统... GlassFish的管理控制台是非常光滑,

而大多数管理在JBoss是通过命令行和文本编辑器。 GlassFish直接来自Sun / Oracle,具有所有的优点。 JBoss不受Sun / Oracle的控制,具有所有可以提供的优点。

2、选型: 

  主要根据业务需求和应用规模来确定,如果仅仅是简单web应用,不需要支持EJB或者JMS等特性的,选择简单易用的Tomcat即可。

如果需要更多的J2EE个特性,比如EJB建议选择Glassfish这种全功能的服务器。

  关于JBOSS和Glassfish,建议选择Glassfish,因为官方出品,实现当前Java EE更及时。

和开发者交流更多问题细节吧,去 写回答
相关文章
Tomcat、Jetty和Glassfish性能测试
下图是对几个主流的应用服务器使用比率的粗率统计结果做出的一个饼图。这个图的数据也许不够精确,但它还是可以在一定程度上反映我们web项目对各类应用服务器的一些选择趋势。我们可以看到,tomcat占据了主要的地位,但是它并不孤独,有超过一半以上的应用并没有使用tomcat作为web容器。这是针对每个项目自身特点做出的选择,也许我们无法比较出哪一款是最好的应用服务器,但是,我们可以在众多的应用服务器中,做出一些性能上的测试和比较,选择一款最适合自己的项目的应用服务器。
IT大咖说
2021/04/23
1.4K0
Tomcat、Jetty和Glassfish性能测试
四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较(转)
现在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面对这四种Java EE容器进行了一番简单的比对。 1. Tomcat是Apache鼎力支持的Java Web应用服务器,由于它优秀的稳定性以及丰富的文档资料,广泛的使用人群。 现在流行的Java EE容器有很多:Tomcat、JBoss、Resin、Glassfish等等。下面对这四种Java EE容器进行了一番简单的比对。 1. Tomcat是Apache鼎力支持的Java Web应用服务器(注:serv
老七Linux
2018/05/09
1.8K0
tomcat java_maven和java有什么区别
MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制。 默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
全栈程序员站长
2022/09/22
3720
Apache、tomcat、Jboss、weblogic、WebSphere区别和容器的作用
总结:Apache/Tomcat/JBOSS/Nginx区别 . 1、Apache是Web服务器,Tomcat是应用(Java)服务器。Tomcat在中小型系统和并发访问用户不是很多的场合下被普遍使用。Apache支持静态页,Tomcat支持动态的。 2、Jetty:Tomcat内核作为其Servlet容器引擎,并加以审核和调优.大中型系统可以应用。能够提供数据库连接池服务,还支持其他 Web 技术的集成,譬如PHP、.NET 两大阵营. 3、JBoss是一个管理EJB的容器和服务器,但JBoss核心
小小科
2018/05/02
3.7K0
Tomcat和Resin有什么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少 最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些 但稳定性和java程序的兼容性,应该是比resin的要好 工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容
红目香薰
2022/11/29
3780
jboss下载和安装[通俗易懂]
1. 下载 http://www.jboss.org/jbossas/downloads/ 选择Certified Java EE 6 Full Profile版本,我下载的是 jboss-as-7.1.1.Final.zip。 2. 解压 jboss-as-7.1.1.Final.zip 注意整个路径必须没有空格才行。 3. 配置环境变量 JRE 环境变量 JAVA_HOME JRE的路径 CLASSPATH %JAVA_HOME%\lib PATH %JAVA_HOME%\bin
全栈程序员站长
2022/09/28
2.5K0
jboss下载和安装[通俗易懂]
蓝牙和WiFi有什么区别?
如果您拥有手机、笔记本电脑、计算机或任何其他现代电子设备,知道蓝牙和 WiFi 。
网络技术联盟站
2021/11/05
2.2K0
蓝牙和WiFi有什么区别?
OracleJDK和OpenJDK有什么区别?
Oracle JDK与OpenJDK里的JVM都是HotSpot VM。从源码层面说,两者基本上是同一个东西。
码农架构
2021/09/18
2K0
OracleJDK和OpenJDK有什么区别?
Closeable和AutoCloseable有什么区别?
导读:我们知道,在java中jvm虚拟机会自动去调用gc(垃圾回收器)去回收堆中没有被引用的对象,至于什么时候回收,是不确定的,同时有些是用到其他资源,jvm也不会进行回收,类似Io流中的FileInputStream使用到了硬盘资源,垃圾回收器是不会去回收的,因此,必须手动关闭掉。我们进行手动的编写close()方法进行关闭,然而,每次这些写会造成代码冗余不优雅,JDK中对于释放资源有Closeable和AutoCloseable可以使用,以下为详解。
码农架构
2021/04/22
3.2K0
Closeable和AutoCloseable有什么区别?
int和Integer有什么区别?
Java虽然号称是面向对象的语言,但是原始数据类型仍然是重要的组成元素,所以在面试中,经常考察原始数据类型和包装类等Java语言特性。
灬沙师弟
2022/10/07
4.1K1
kubernetes和docker有什么区别
本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。
码农编程进阶笔记
2023/03/23
2K0
kubernetes和docker有什么区别
Exception和Error有什么区别?
世界上存在永远不会出错的程序吗?也许这只会出现在程序员的梦中。随着编程语言和软件的诞生,异常情况就如影随形地纠缠着我们,只有正确处理好意外情况,才能保证程序的
灬沙师弟
2022/09/06
1.5K0
Jsp和Servlet有什么区别?
Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其init()方法进行Servlet的初始化;请求到达时调用Servlet的service()方法,service()方法会根据需要调用与请求对应的doGet或doPost等方法;当服务器关闭或项目被卸载时服务器会将Servlet实例销毁,此时会调用Servlet的destroy()方法。
李红
2019/08/28
2.5K0
Jsp和Servlet有什么区别?
Exception和Error 有什么区别
checkedException 一般是外部错误,这个异常发生在编译阶段。Java 编译器会强制去捕获此类异常。一般会要求把这段可能出现的异常程序进行 try catch。
王小明_HIT
2019/10/15
1.7K0
列表和元组有什么区别
如果有了解过python中的列表和元组,你可能会知道相对于列表,元组是不可变的,也就是说元组中的数据不能随意更改。除了列表是用中括号表示而元组是用小括号表示之外,这两种数据类型好像并没有什么不同,都是用来存放一系列的数据,事实真是如此吗? TypeError Traceback (most recent call last) in() 4 5 # 现在改变b中数据的值 — 6 b[2] = 4 TypeError: ‘tuple’ obje
企鹅号小编
2018/02/26
2K0
列表和元组有什么区别
int 和 Integer 有什么区别?
int 是 java 的原始数据类型,Integer 是 java 为 int 提供的封装类。
MickyInvQ
2020/09/27
1.6K0
CountdownLatch 和 CycliBarriar 有什么区别?
一位工作5年的小伙伴面试的时候,被问到这样一个问题,说,CountdownLatch 和 CycliBarriar 有什么区别?这个对于很多人都会比较陌生,但是接触过并发编程的小伙伴来说还是比较简单的。
Tom弹架构
2022/12/19
2.4K0
CountdownLatch 和 CycliBarriar 有什么区别?
沪市和深市有什么区别?
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168351.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
1.6K0
声明和定义有什么区别
问题 C/C++ 中,声明和定义有什么区别? 回答 1. 声明不分配存储空间,定义会分配。 定义会实实在在地创造这个东西,而声明只是告诉编译器有这么个东西,它的创造在别处。 extern int bar; // 声明 extern int g(int, int); // 声明 double f(int, double); // 声明 class foo; // 声明 int bar; // 定义 int g(int lhs, int rhs) {return lhs*rhs;} // 定义 double
ClearSeve
2022/02/11
1.5K0
TCP 和 UDP 有什么区别?
TCP 和 UDP 都是 TCP/IP 协议簇中的比较有代表性的 传输层协议。这里的传输层负责为应用程序提供端对端的通信服务。
前端西瓜哥
2022/12/21
4610

相似问题

securecrt和winscp有什么区别?

41.7K

JDK和JRE有什么区别?

2456

addEventListener和onclick有什么区别?

2502

Linux和ubantu有什么区别?

43.1K

JavaScript和ECMAScript有什么区别?

2363
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
web前端擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文