代码之家  ›  专栏  ›  技术社区  ›  Wolkenarchitekt

ejb3.1应用程序仅部署为WAR:EJB-jar.xml呢?

  •  7
  • Wolkenarchitekt  · 技术社区  · 14 年前

    我有一个JavaEE6应用程序,由webstuff和ejb组成,它只作为WAR部署(使用EJB3.1)。构建基于Maven。我刚刚读到一个新的可能性,可以在JavaEE6中进行模块初始化 here 我的申请也需要这个。另外,我希望有一个选项可以在XML中定义一些EJB属性。

    由于该示例是作为EAR项目部署的,因此顺序在application.xml中定义。但是在战争部署的项目中,没有application.xml。现在我想知道我在哪里可以定义这些信息?或者可以在战争部署的应用程序中使用application.xml吗?

    编辑:

    哦,我没有正确地阅读模块顺序示例,在第一时间我认为它是关于我的应用程序中的ejb的加载顺序。当然,我的WAR应用程序中只有一个模块,所以订购毫无意义。

    好的,但在我讨论这个问题时,还有一个大问题(也修改了问题标题以反映变化):ejb-jar.xml呢?我可以用XML定义关于EJB的内容吗(因为它对某些设置很有用,可以避免重新编译)?

    2 回复  |  直到 14 年前
        1
  •  9
  •   Arjan Tijms Mike Van    12 年前

    javaee6的模块初始化特性旨在按照特定的顺序初始化应用程序的不同模块。当您拥有一个基于WAR的EJB应用程序时,您的EJB和Web应用程序就不再有单独的模块了。只有一个模块 web应用程序模块 以战争为基础的部署。

    • 将EJB分离到单独的模块中,并使用基于EAR的部署。
    • 这或多或少是一种诡计,正如在JavaEE5中所做的那样,您应该避免这样做。在代码中使用单例ejb之前,您可能需要在逻辑中编写代码,以确保已创建单例ejb(假设这是由于在应用程序中使用了单例ejb)。

    WAR文件中ejb-jar.xml的位置

    The EJB 3.1 specification (在打包一章中)讨论了在WAR中部署ejb-jar.xml文件时的位置问题:

    描述符与名称一起存储 WEB-INF/ejb-jar.xml。

    PS:我还没有尝试过这种部署方式。基督教青年会。

        2
  •  5
  •   David Blevins    14 年前

    只有 即使WEB-INF/lib/中有ejb jar,也会检查位置--根据标准规则,任何META-INF/ejb-jar.xml文件都会被忽略。

    专家组在这一点上有相当多的分歧,因此如果您有偏好,那么将反馈发送到ejb3.1专家组列表以供EJB.next考虑还不算晚。