EJB容器是否存在于所有应用服务器中?深入了解EJB容器。

9

我是EJB的新手。从我到目前为止所做的所有阅读和搜索中,我了解到以下内容:

  • EJB是应用程序的业务逻辑编写和维护的bean。
  • 所有EJB都被放置在称为EJB容器的东西中。
  • EJB容器只是一个服务器端程序,旨在管理EJB并提供EJB应该提供的基本功能(例如事务管理、安全性、无冲突环境等)。

1) 我的疑问是,所谓的EJB组件是否驻留在所有应用程序服务器中?

2) 当我们说EJB 2.1 / 3.0 / 3.1时,这是否意味着发布了新版本的EJB容器?

3) EJB容器是否也驻留在Web服务器中?

谢谢。


1
你的第二个问题不完整! - Santosh
2个回答

14

你正确了解了EJB的概念。

  1. 是和不是。这要取决于你对"应用服务器"的理解(答案3中描述了歧义)。

  2. 当你说到EJB 2.x/3.0/3.1或其他版本时,指的是特定的EJB规范,也就是说,你在引用该版本所支持的一组服务。换句话说- 是的,这意味着EJB容器必须处于给定的版本。
    首先发布规范文档(可以看到草稿版本,为新功能投票,基本上可以参与此过程)。然后撰写一个参考实现(RI),只是为了说明它是“可行的”,你可以立即使用它。接着,不同的供应商可能会提供自己的EJB容器,这些容器必须符合特定的EJB规范。

  3. 有几个不同的术语需要注意。为了确保我们谈论的是同样的事情:

    • Web服务器是像Apache HTTP Server这样的HTTP/HTTPS服务器,用于为客户端请求提供服务。这个术语不仅与Java EE相关。
    • Web容器是Java EE术语,可以有几种含义,但通常指Servlet容器和JSP容器。这些容器为Web客户端提供服务,因此被称为Web容器。一般来说,Web容器内有一个Web服务器(就像Tomcat的情况一样)。但是,你可以进行配置,以使静态资源仅由纯Web服务器提供服务,而动态内容(你的Java App、Servlets、JSP等)由Web容器提供服务。
    • 应用服务器是一个模糊的名称。在Java EE纯洁主义者的世界中,它只能意味着提供所有Java EE服务的服务器。非Java EE纯洁主义者将应用服务器视为任意的服务器,它由你的应用程序组成。根据这个定义,你可以将Tomcat(一个Web容器和Web服务器)称为应用服务器

正如您所看到的,术语并不十分准确,因为一件事可能意味着几个略微不同的事情。此外,自从Java EE 6以来,我们就有了配置文件。这意味着您可以拥有符合Web Profile或Full Profile的Java EE应用服务器。在这种情况下,只有Web Profile服务器应该被视为应用服务器

简而言之 - 您可以在Web容器中使用EJB容器。查看OpenEJB或者基本上是项目TomEE


命名应用服务器存在歧义,而 Web 服务器是应用服务器的子集。明白了!谢谢。 - Anuj Balan
没错。如果有人想的话,可以用JavaScript或CGI脚本编写应用程序代码,将其嵌入到Web服务器中,并称之为应用服务器。始终使用共享词汇非常重要,以确保你所说的是什么 :-) - Piotr Nowicki
在企业环境中,通常会将网页服务器放在应用服务器的前面,因为网页服务器经过优化可以处理大量的HTTP请求,然后再将请求传递给应用服务器(用于生成实际内容)。 - matt freake
@Matt 当然可以!这就是我在第二个答案的第二个要点中试图表达的意思。 - Piotr Nowicki
1
对于你的好答案,还有一个额外的备注:Java EE Web Profile 包括 EJB,但是它有一个特殊的版本叫做EJB Lite。 - Arjan Tijms

10

回答你的问题:

  1. 通常是的。应用服务器通常是指具有EJB容器(如Glassfish,Jboss等)的服务器。但是您需要确保应用服务器支持EJB。

  2. 是的。

  3. 不是的。Web服务器或Web容器(如Tomcat,Jetty等)与EJB容器的作用不同。但是所有应用服务器都有Web服务器(以及EJB容器)。

EJB容器和Web容器(服务器)是Java EE应用程序场景中的不同层次。有关更多信息,请查看此链接


感谢您的澄清。应用服务器和Web服务器提供的服务有什么区别? - Anuj Balan
通常情况下,Web服务器处理应用程序的UI部分(即在浏览器上看到的内容),而应用服务器更大,包含Web服务器EJB容器(您的业务逻辑)以及其他企业服务,如JNDI、数据源、事务等。 - Santosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接