I have a JAR file for authorization. I need it for each of my WAR files. All the WAR files are packaged in an EAR file. Do I have to repeat this common JAR in every WAR, or is there a structure for common libraries?
So my example looks something like this...
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
Each of my WAR applications can see common1.jar, but it is in the EAR three times.
Where in the EAR structure could I put common1.jar so that appl1, appl2, and appl3 could see it without repeating it three times?
The standard way is to put the JARs at the root of your EAR and reference them in the Class-Path
attribute of the WARs' META-INF/MANIFEST.MF
. See this article.
Check your container's documentation to make sure it is supported.
It’s in the JEE5 spec, chapter EE 8.2.1:
A .ear file may contain a directory that contains libraries packaged in JAR files. The library-directory element of the .ear file’s deployment descriptor contains the name of this directory. If a library-directory element isn’t specified, or if the .ear file does not contain a deployment descriptor, the directory named lib is used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With