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