【问题标题】:Services provided by the different Java EE containers不同 Java EE 容器提供的服务
【发布时间】:2012-04-14 19:45:45
【问题描述】:

我正在阅读这本书Beginning Java™ EE 6 Platform with GlassFish™ 3: From Novice to Professional ,我对下面的图片有疑问。我以为我在某处读到了 Web 服务等服务仅在 EJB 容器中提供,但从下图(显示每个容器提供的服务:报价书)看来,Web 容器也确实提供了该服务。这是正确的还是我误解了图像和图像文本?如果这是正确的,那么这意味着我可以将我的应用程序打包为 WAR 并将其部署到 Web Container 并仍然使用 Web Services API?

【问题讨论】:

    标签: java jakarta-ee


    【解决方案1】:

    缓存、池化、命名、生命周期管理和 RMI

    【讨论】:

      【解决方案2】:

      正如 Osw 已经说过的,这些概念正在融合在一起。

      在 EAR 应用程序中,您可以拥有单独的 Web 和 EJB 模块。 EJB 模块传统上专注于业务逻辑,可通过本地或远程 (RPC/RMI) 调用访问。由于 Web 服务的一种用法是 RPC,因此为这些技术提供 EJB 模块支持是有意义的。从纯粹的技术角度来看,它基本上只是另一种执行 RPC 的协议。

      然而,web 模块和 web 服务的概念自然也有重叠,所以 web 模块当然也支持这种技术(至少不是因为 web 服务不仅仅是 RPC)。

      进一步模糊界限的事实是,EJB bean 曾经专门用于放入 EJB 模块,但现在可以在 web 模块中使用。

      Java EE 的未来版本可能会更加模糊界限,因为现在作为 EJB bean 属性的许多容器服务(如事务、池等)将与它们分离并通过 CDI 注释提供,因此它们可以直接应用于所有“Web 组件”。

      这样一来,Web 模块确实是 EJB 模块的超集。

      EJB 模块的功能仍然是它允许您在通过类加载器隔离的 Web 层之下拥有一层功能。这意味着 Web 模块可以引用您在 EJB 模块中定义的类,但反之则不行。此外,像 Servlet、JSP 和 JSF 这样的纯表示技术在 EJB 模块中不可用,目前根本没有计划让这些技术在那里也可用。

      【讨论】:

        【解决方案3】:

        如果我错了,有人会纠正我,但从历史上看,它有点不同:它是一个 EJB 服务,现在可以注释为 @WebService

        所以是的,web 和 ejb 容器都可以提供 web 服务。是的,您的网络服务可以打包在一个单一的战争中。

        【讨论】:

          猜你喜欢
          • 2013-12-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-11
          • 2019-05-29
          • 2017-04-22
          • 1970-01-01
          相关资源
          最近更新 更多