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

问题描述 投票:6回答:3

我有一个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可以看到它而不重复三次?

java java-ee enterprise-library
3个回答
6
投票

标准方法是将JAR放在EAR的根部,并在WARs的Class-PathMETA-INF/MANIFEST.MF属性中引用它们。见this article

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


1
投票

它符合JEE5规范,EE 8.2.1章节:

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


-4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.