当前位置: 首页 > 面试题库 >

EAR与单独的EJB + WAR

章宏峻
2023-03-14
问题内容

将应用程序部署为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的注入。

在第二种情况下(您似乎在问题中要提到),没有逻辑上的单个应用程序,而是两个单独的模块。它们确实在同一JVM中运行,但是正式Java
EE不允许使用本地访问,而必须使用远程访问(尽管实际上本地访问通常无论如何都可以工作)。同样,在Web模块中的Bean中注入EJB
Bean不能直接使用简单的@EJB注释来工作,而是lookup必须使用指定全局JNDI名称的属性。

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

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



 类似资料:
  • 问题内容: 我刚刚开始阅读EJB。 即使我冒险尝试,基于我对它们的了解,我也会有一些疑问。 使用EJB的应用程序是否总是必须部署为EAR? 是否可以像其他其他Java Web项目一样使用ECLIPSE而不使用ANT来部署包含EJB的应用程序? 问题答案: 1.使用ejb的应用程序是否必须始终部署为EAR? 没有。 EJB模块被组装成一个JAR,可以将其命名为myapp-ejb.jar。 它包含EJ

  • 我有一个ear,它包含2个war文件,每个war都包含无状态ejb和rest类。接口位于commons中。jar文件。耳朵结构如下所示: 我试图使用无状态-ejb-2中的无状态-ejb-1和注释,但我在部署期间遇到了错误。当我在stateless-EJB-2中使用@EJB时,就部署了ear,但在调用jersey-rest-2时,我遇到了一个远程查找错误。 这是我的方法调用链: 泽西-rest-1

  • 问题内容: 我是EAR的新手。我已经开发了一个功能相互依赖的Web模块和ejb模块。为此,我试图将它们配置在EAR中。我将web和ejb模块都映射到EAR,可以看到application.xml为 但是当我尝试执行EAR时,我的服务器抛出以下异常 从上面我可以理解,EAR无法定位EJB模块中存在的类,因此引发异常。我正在使用WildFLy 10服务器和Eclipse IDE。 问题答案: EAR文

  • 但是当我尝试执行EAR时,我的服务器抛出异常 从上面我可以理解的是,EAR无法定位EJB模块中存在的类,因此抛出异常。我使用的是Wildfly10服务器和eclipse IDE。

  • 我正在使用Glassfish 4。我有一个耳朵,它有一个战争和一个罐子(与EJB)。 我想从WAR中调用EJB,但不确定是否需要使用本地或远程接口。 在我的罐子里,我的豆子是这样的: 在我的WAR中,我有一个web服务,它看起来如下所示: 这两个都包装成一个耳朵。 当我调用WebService方法时,我得到一个AccessLocalException: 首先: 这是调用EJB的正确方法吗。EAR中

  • 基本上,我有一种情况,我必须在一个耳朵内访问JAR中声明的EJB,而不是在另一个耳朵中访问WAR。两个EAR都部署到同一个WebLogic托管服务器(同一个域)。Java代码中没有用于该EJB的注释。在ejbjar中。xml它被定义为会话无状态容器bean。在WebLogicEJBJAR中。xml指定了本地jndi名称。我尝试使用InitialContext查找这个bean,并从该接口获取Loca