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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否必须在EAR中的WAR中重复使用常见的JAR?相关的知识,希望对你有一定的参考价值。

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

答案

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

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

另一答案

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

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

另一答案

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

以上是关于是否必须在EAR中的WAR中重复使用常见的JAR?的主要内容,如果未能解决你的问题,请参考以下文章

Java中的JAR/EAR/WAR包的文件夹结构说明(转)

Jar/War/Ear等包的作用与区别详解

jar/war/ear文件的区别

java的war、jar、ear包的作用分别是啥?

在 JavaEE 6 WAR 与 EAR 中打包 EJB

Java的JAR包, EAR包 ,WAR包 都是干啥的,有啥区别