gpt4 book ai didi

java - EAR 与单独的 EJB + WAR

转载 作者:IT老高 更新时间:2023-10-28 20:45:50 26 4
gpt4 key购买 nike

将应用程序部署为 EAR(带有 1 个 EJB 和 1 个 WAR 模块)与单独的模块有什么区别?我想使用 GlassFish 3 Web 配置文件,但它不支持 EAR 存档。我可以简单地将 EJB 和 WAR 用作单独的模块吗?还有其他选择吗?

最佳答案

3 种部署变体之间似乎有些混淆:

  1. 一个包含 EJB 和 WEB 模块的 EAR
  2. 部署单独的 EJB 模块和单独的 WEB 模块
  3. 部署包含 EJB 类或 EJB jar 的 WEB 模块。

在第一种情况下,逻辑上您有一个应用程序,但一个应用程序分为两层。 WEB 模块与EJB 模块是隔离的,因为它可以使用EJB 模块中的类,但EJB 模块不能使用WEB 模块中的类。由于它是单个应用程序,因此可以使用对 EJB bean 的本地访问,并且 EJB bean 的注入(inject)可以按预期工作。

在第二种情况下(您似乎在问题中提到了这种情况),没有逻辑上的单个应用程序,而是两个独立的模块。它们确实在同一个 JVM 中运行,但 Java EE 官方不允许使用本地访问,而必须使用远程访问(尽管实际上本地访问通常仍然有效)。此外,在 web 模块中的 bean 中注入(inject) EJB bean 不能直接使用简单的 @EJB 注释,而是必须使用指定全局的 lookup 属性JNDI 名称。

最后,第三种情况(您似乎没有提到,但 'home' 提到了)与第一种情况有点相似,但在这种情况下没有分层和隔离。 EJB bean 可以直接从 Web 模块的其余部分访问所有类。

网络配置文件仅支持最后一种部署情况。不支持 EAR 和独立 EJB 部署。

关于java - EAR 与单独的 EJB + WAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com