49

我对 Java EE/EJB 比较陌生,而且我已经阅读了很多关于 Java EE 容器的内容。我有使用 Web 容器(JBoss 中的 WAR 文件)的经验。我也知道 JBoss 也可以用作 Java EE 容器。

Java EE 容器与 Web 容器有什么区别?

我知道 Java EE 也能够包含一个 .war 文件。它们有什么不同,它们有什么区别?是否有任何偏好供应商特定的方式哪个更好?

4

6 回答 6

88

首先,“J2EE”是一个过时的缩写,现在简称为“Java Enterprise Edition”或Java EE。

与 servlet 容器(例如 Tomcat)相反,“完整的”Java EE 应用程序服务器还包含一个 EJB 容器。EJB 是 Enterprise Java Beans,你可以在这里阅读很多关于它们的信息(第四章)。EJB 现在的版本是 3.2(Java EE 7 和 Java EE 8),之前的版本是 3.1(Java EE 6)和 3.0(Java EE 5);但是最大的区别在于 v2 和 v3 之间。

EJB 旨在保留应用程序的业务逻辑。例如,无状态会话 bean 可以计算某些东西,或表示 Web 服务或您的应用程序需要做的任何事情。消息驱动 bean 可以侦听消息队列,因此如果您想要异步通信,它们很有用。单例 bean 保证每个 bean 一个实例等。

关于文件类型,EJB 打包成 .jar 文件,Web 应用程序打包成 .war 文件,如果要将它们混合在一个应用程序中,那就是 .ear 文件(“企业档案”)。

除了 EJB,“完整”应用服务器还关心事务、安全性、JDBC 资源……我强烈建议在 servlet 容器上使用它,但好处是复杂性带来的,因此您必须花费合理的时间学习如何处理例如WebspherePayaraWildFly更简单,并且是我的最爱)。JBossWeblogic也很流行,如果您熟悉 Tomcat,请查看TomEE

于 2013-06-19T06:50:26.710 回答
27

Java EE 容器:管理在 Java EE 服务器上运行的 EJB、JMS、JTA 的执行,例如 JBoss、Glassfish。

Web 容器:管理 Web 页面、servlet 和 Java EE 应用程序的一些 EJB 组件的执行。Web 组件及其容器运行在 Jetty、tomcat 等 Web 服务器上。

于 2013-06-20T09:17:14.897 回答
4

web-container 和 EJB-container 是 Java EE 容器的子集。Java EE 容器还包括应用程序客户端容器小程序容器

这是文档所说的:

部署过程在 Java EE 容器中安装 Java EE 应用程序组件。

  • Java EE 服务器:Java EE 产品的运行时部分。Java EE 服务器提供 EJB [容器和 Web 容器]*。

  • Enterprise JavaBeans (EJB) 容器:管理 Java EE 应用程序的企业 bean 的执行。Enterprise bean 及其容器在 Java EE 服务器上运行。

  • Web 容器:管理 JSP 页面和 Java EE 应用程序的 servlet 组件的执行。Web 组件及其
    容器在 Java EE 服务器上运行。

  • 应用程序客户端容器:管理应用程序客户端组件的执行。应用程序客户端及其容器在客户端上运行。

  • 小程序容器:管理小程序的执行。由 Web 浏览器和在客户端上一起运行的 Java 插件组成。

*在文档中,他们使用复数形式,但实际上每个 Java EE 服务器只有一个 Web 容器和一个 EJB 容器。

于 2016-12-07T09:20:12.987 回答
0

我认为它们之间的区别可能是它们支持的协议。

例如,我们不会尝试在 web 容器中管理事务,如 Tomcat,我们通常会尝试在部署在 Tomcat 中的 web-project 中进行控制。而像EJB这样的 Web/应用程序服务器则相反。

于 2014-12-12T03:08:31.877 回答
-1

Java EE 容器是一种应用程序服务器解决方案,它支持 Web 容器、EJB 3 和其他 Java EE API 和服务。

Oracle WebLogic 服务器、GlassFish服务器、IBM WebSphere 应用服务器、JBoss 应用服务器和 Caucho Resin 是 Java EE 容器的示例......

于 2017-09-29T08:50:22.653 回答
-2

应用程序可以分类如下:

  • 桌面应用程序,如 GUI,
  • Web 应用程序,如动态网页,
  • 处理核心业务处理的企业应用程序。

企业应用:一般用户交互不多。在这种情况下,如果您希望您的应用程序使用 Web 服务、JMS 或 JTA(与大型机事务服务器连接)与分布在 Intranet/Internet 上的不同应用程序进行交互,那么您需要具有 EJB 容器和其他安全功能的 Java EE。

Web 容器:相反,如果您想使用 JNI 与分布式应用程序交互,或者只是与 RDBMS 对话,或者只是呈现静态或动态网页,那么 Web 容器对您来说就足够了。来自浏览器的 HTTP 请求可以通过 servlet 调用和执行 Java 程序。Java 程序可以调用 JDBC API 与 RDBMS 对话。同样,您可以使用 JNI 或 RMI 从另一个服务器调用 C 或 Java 程序。

于 2018-12-04T09:14:36.927 回答