是否必须在EAR中的WAR中重复使用常见的JAR?

时间:2009-01-16 16:15:08

标签: java java-ee enterprise-library

我有一个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中有三次。

在EAR结构中我可以放置common1.jar以便appl1,appl2和appl3可以看到它而不重复三次?

3 个答案:

答案 0 :(得分:6)

标准方法是将JAR放在EAR的根目录中,并在WAR {'Class-Path的{​​{1}}属性中引用它们。请参阅this article

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

答案 1 :(得分:1)

这是JEE5规范,章节EE 8.2.1:

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

答案 2 :(得分:-4)

您的应用服务器应该有一个像shared / lib这样的文件夹,您可以在同一个实例中放置可以由多个webapp共享的jar文件。