6

我有一个用于授权的 JAR 文件。我的每个 WAR 文件都需要它。所有 WAR 文件都打包在一个 EAR 文件中。我是否必须在每个 WAR 中重复这个通用 JAR,或者是否有通用库的结构?

所以我的例子看起来像这样......

big.ear
  - META-INF
    - MANIFEST.MF
    - application.xml
  - appl1.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique1.jar
        - unique2.jar
        - unique3.jar
        - common1.jar
    - jsps/html/etc
  - appl2.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique3.jar
        - unique4.jar
        - common1.jar
    - jsps/html/etc
  - appl3.war
    - META-INF
      - MANIFEST.MF
    - WEB-INF
      - web.xml
      - lib
        - unique5.jar
        - common1.jar
    - jsps/html/etc

我的每个 WAR 应用程序都可以看到 common1.jar,但它是在 EAR 中的 3 次。

我可以在 EAR 结构中的哪个位置放置 common1.jar 以便 appl1、appl2 和 appl3 可以看到它而无需重复 3 次?

4

3 回答 3

6

标准方法是将 JAR 放在 EAR 的根目录中,并在Class-PathWARs' 的属性中引用它们META-INF/MANIFEST.MF。见这篇文章

检查容器的文档以确保它受支持。

于 2009-01-16T16:34:22.647 回答
1

它在 JEE5 规范的 EE 8.2.1 章中:

.ear 文件可能包含一个目录,该目录包含打包在 JAR 文件中的库。.ear 文件的部署描述符的 library-directory 元素包含此目录的名称。如果未指定 library-directory 元素,或者 .ear 文件不包含部署描述符,则使用名为lib的目录。

于 2012-12-12T13:39:46.020 回答
-4

你的应用服务器应该有一个类似 shared/lib 的文件夹,你可以在其中放置多个 webapp 可以在同一个实例中共享的 jar 文件。

于 2009-01-16T16:33:21.977 回答