我是否可以将所有EJB部署描述符放在EAR文件的META-INF目录中,而不是EJB jar文件中

时间:2012-05-11 13:42:29

标签: java-ee jboss ejb ejb-3.0

我有一个企业应用程序,它作为EAR文件提供。耳内的META-INF文件夹包含' application.xml'正如预期的那样,有一个属于该应用程序的模块列表。

耳内还有许多EJB jar文件,每个文件都包含许多EJB。出于某些原因,我们希望使用XML部署描述符来配置所有ejbs。因此,我们有许多ejb-jar文件,每个文件都嵌入在ear文件中的每个jar的META-INF文件夹中。

EAR_FILE
:     
:-----META-INF
:           :
:           -application.xml
:     
:     
:------EJB_JAR_1
:              :
:              -META-INF
:                      :
:                      -ejb-jar.xml
:------EJB_JAR_2
:              :
:              -META-INF
:                      :
:                      -ejb-jar.xml
:------EJB_JAR_3
              :
              -META-INF
                      :
                      -ejb-jar.xml


如您所见,这导致了许多单独的ejb-jar.xml部署描述符。我们希望能够将其集中到一个部署描述符中,该描述符定义应用程序中的所有ejbs。

另外,我们希望将单独的ejb jar文件保存在耳朵内,而不是将它们全部放在一只耳朵中。

是否可以拥有一个' master' ear文件的META-INF文件夹中的ejb-jar文件,其中包含应用程序中所有EJB的配置?

或者甚至可以将ejb-jar文件放在包含EJB的实际jar之外?

在一天结束时,我真正希望实现的是将所有ejb部署描述符集中到一个文件中,而不是像上面那样将它们分散到每个单独的EJB jar上?

非常感谢,

戴夫。

1 个答案:

答案 0 :(得分:0)

  

或者甚至可以将ejb-jar文件放在实际的文件之外   包含EJB的jar?

是的,虽然更准确:可以在EJB模块JAR之外安装EJB类。换句话说,您可以使用单个ejb-jar.xml创建单个EJB模块,然后将所有EJB_JAR_1,EJB_JAR_2等放在EAR / lib /目录中,这会自动使所有EJB都可以看到所有JAR EAR中的模块(或者,在您的情况下是单个EJB模块)。或者,您可以在EJB模块META-INF / MANIFEST.MF中手动维护Class-Path: ejb-1.jar ejb-2.jar列表,但这样做更有效。