应用程序服务器和servlet容器之间的区别?


115

我试图了解成熟的应用程序服务器(例如Weblogic,JBoss等)和Servlet容器(Tomcat,Jetty等)之间的区别。

它们有何不同以及何时使用?

谢谢,



@Jigar:如果您知道重复的确切问题,那么您实际上应该投票关闭它作为重复的问题。
Joachim Sauer

1
@Joachim我没有投票关闭。
Jigar Joshi

2
因为它不是重复的。:)
Bozho 2011年

1
哎呀...随意忽略我,似乎我还没有达到必要的咖啡因水平。
约阿希姆·索尔

Answers:


171

Servlet容器仅支持Servlet API(包括JSP,JSTL)。

应用程序服务器支持整个JavaEE-EJB,JMS,CDI,JTA,Servlet API(包括JSP,JSTL)等。

可以在servlet容器上运行大多数JavaEE技术,但是您必须安装特定技术的独立实现。


1
我这边+1,有很大的不同。任何其他的变化@Bozho
Deepak

1
@Bozho:+1:到目前为止,我注意到您的一件事是您经常在您的令人惊奇的答案中嵌入简单的术语。
Shirgill Farhan 2014年

1
@Bozho非常有用
Xstian

@Bozho灿servlet的容器调用出来作为服务器与功能*应用程序服务器的子集”和他们内心深处相同的工作(对用例常见的两种)。
库尔迪普·亚达夫

15

广义地说,servlet容器或多或少地将其自身限制为J2EE Servlet规范的实现。另外,它的重点是运行时环境,而不是提供其他工具。

相比之下,成熟的应用程序服务器将实现整个J2EE堆栈。加上所有企业工具和集成可能性。应用程序服务器通常具有高级管理界面,它支持群集和其他主要用于高端系统开发的功能。

对于初学者来说,最好使用一个简单的servlet容器,因为那里的学习曲线不太陡峭。


编辑

@Apache Fan:这取决于您所处情况的细节,例如现有系统和未来计划。我认为通用流程图方法在这里不适用。

平台选择通常是通过权衡特定要求和正在考虑的系统的第一手资料来完成的。

但是,该问题并未提供有关评估标准的任何线索。它应该是开源的吗?是否需要全天候的供应商支持?系统应与什么样的企业环境集成?许可费是一个问题吗?有必备的技术或工具吗?等等。

不了解以上内容,几乎是在黑暗中拍摄。


我是从企业角度出发。
Pushkar'2

11

基本上,在Java EE上下文中的应用程序服务器是安装在服务器上的软件,它实现一个Java EE规范(例如Java EE 7)。这意味着此类软件(应用程序服务器)必须能够运行Java EE应用程序。

Java EE定义了4个域,即所谓的容器

  • 小程序容器,
  • 应用程序客户端容器,
  • Web容器,以及
  • EJB容器。

两个容器是应用程序服务器的一部分(EJB和Web容器),另外两个是客户端计算机的一部分。

JBoss和Weblogic是应用程序服务器,Tomcat和Jetty是Web容器。这就是JBoss和Weblogic可以处理比Web容器更多的技术的原因。应用服务器可以管理EJB。

Servlet容器不适用于合格的Tomcat和Jetty,因为它的限制更为严格。Tomcat不仅可以执行Servlet,还可以执行JSP和JSF。


2

afaik,websphere和jboss是完全兼容的j2ee服务器,可以运行在EJB之类的servlet之外,而Tomcat只是一个servlet容器,您不能在其上运行EJB。


那么Apache服务器属于哪一类?
滚石

Apache HTTP Server是功能完善的Web服务器
2015年

2

用Layman术语表示: Web服务器的意思是:处理HTTP请求(通常来自浏览器)。

Servlet容器(例如Tomcat)表示:它可以处理Servlet和JSP。

应用服务器(例如GlassFish)意味着: *它可以管理Java EE应用程序(通常同时包括servlet / JSP和EJB)。

对于初学者来说,最好使用一个简单的servlet容器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.