【问题标题】:Does EJB container reside in all application servers. EJB container in depthEJB 容器是否驻留在所有应用程序服务器中。深入了解 EJB 容器
【发布时间】:2012-02-29 07:19:38
【问题描述】:

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

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

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

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

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

谢谢。

【问题讨论】:

  • 你的第二个问题不完整!

标签: java ejb ejb-3.0 application-server


【解决方案1】:

您正确理解了 EJB 理念。

  1. 是和否。取决于您对“应用程序服务器”的理解(下面的答案 3 中描述了歧义。)

  2. 当您说 EJB 2.x/3.0/3.1 等时,您指的是特定的 EJB 规范,这意味着您指的是 一组服务版本支持。换句话说 - 是,这意味着 EJB 容器必须是给定的版本。
    首先发布规范(您可以查看草稿版本,为新功能投票并基本参与此过程)。然后,编写一个参考实现 (RI) 只是为了表明它是“可行的”并且您可以立即使用它。然后,不同的供应商可能会提供他们自己的 EJB 容器,这些容器必须符合特定的 EJB 规范。

  3. 您需要注意几个不同的术语。可以肯定的是,我们在谈论同样的事情:

    • Web 服务器是一个 HTTP/HTTPS 服务器,如 Apache HTTP Server,它服务于客户端请求。该术语不仅与 Java EE 有关。
    • Web 容器是一个 Java EE 术语,它可能意味着一些东西,但通常它指的是 Servlet 容器,比方说 JSP 容器。这些容器为 Web 客户端提供服务,因此它是 web 容器。通常,Web 容器内部有一个 Web 服务器(如 Tomcat 的情况)。但是,您可以对其进行配置,以便静态资源将仅由纯 Web 服务器作为服务器,而动态内容(您的 Java App、Servlet、JSP、等)将作为您的 Web 容器的服务器。
    • 应用程序服务器是一个模糊的名称。在 Java EE 纯粹主义者的世界中,它可能意味着只有这样的服务器才能提供 所有 Java EE 服务。非 Java EE 纯粹主义者将 应用程序服务器 视为包含您的应用程序的任意服务器。根据这个定义,你可以将Tomcat(一个Web容器和Web服务器)称为应用服务器。

如您所见,词汇并不清晰,因为一件事可能意味着几件略有不同的事情。此外,从 Java EE 6 开始,我们有了配置文件。这意味着您可以让 Java EE Application Server 符合 Web Profile 或 Full Profile。在这样的术语中,只有 Web Profile 服务器应该被视为 应用程序服务器。

作为一个总结——你可以在 Web Container 中使用 EJB Container。看看OpenEJB 或者基本上是项目 TomEE。

【讨论】:

  • 因此,在命名应用服务器时存在歧义,并且 Web 服务器是应用服务器的子集。知道了 !!!谢谢。
  • 对。如果有人愿意,他可以用 JavaScript 或 CGI 脚本编写他的应用程序代码,将它们嵌入到 Web 服务器中并称之为 应用程序服务器。使用共享词汇来确定你在说什么总是很重要的:-)
  • 在企业设置中,您通常会在应用程序服务器“前面”有一个 Web 服务器,因为 Web 服务器将被优化以处理大量 http 请求,之前将请求传递给应用服务器(生成实际内容)
  • @Matt 当然!这就是我在回答否的第二个要点中试图说的。 2.
  • 对您的好答案的补充说明:Java EE Web 配置文件包括 EJB,但它的一个特殊版本称为 EJB Lite。
【解决方案2】:

回答你的问题

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

  2. 是

  3. 没有。 Web 服务器或 Web 容器(Tomcat、Jetty 等)的用途与 EJB 容器不同。但是所有应用程序服务器都具有 Web 服务器(以及 EJB 容器。)。

EJB 容器和 Web 容器(服务器)服务器是 Java EE 应用场景中的不同层。查看this链接了解更多信息。

【讨论】:

  • 感谢您的澄清。 app server 和 web server 提供的服务有什么区别??
  • “一般” Web 服务器处理应用程序的 UI 部分(您在浏览器上看到的内容),其中应用程序服务器更大,包含 Web 服务器 EJB 容器(您的业务逻辑)和其他企业服务如JNDI、Datasource、事务等
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2017-04-22
  • 2013-02-25
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多