2009-01-16 30 views
6

Tengo un archivo JAR para autorización. Lo necesito para cada uno de mis archivos WAR. Todos los archivos WAR están empaquetados en un archivo EAR. ¿Tengo que repetir este JAR común en cada WAR, o hay una estructura para bibliotecas comunes?¿Deben repetirse los JAR comunes en WAR en un EAR?

Así que mi ejemplo se ve algo como esto ...

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 

Cada una de mis aplicaciones guerra puede ver common1.jar, pero está en el oído tres veces.

Donde en la estructura EAR podría poner common1.jar para que appl1, appl2 y appl3 pudieran verlo sin repetirlo tres veces?

Respuesta

6

La forma estándar es poner los JAR en la raíz de su EAR y hacer referencia a ellos en el atributo Class-Path de WAR META-INF/MANIFEST.MF. Ver this article.

Revise la documentación de su contenedor para asegurarse de que sea compatible.

+0

mirándolo. – dacracot

+0

El enlace no funciona a partir de ahora. – Prince

-4

Su servidor de aplicaciones debe tener una carpeta como shared/lib donde puede poner archivos jar que puedan ser compartidos por varias aplicaciones web en la misma instancia.

+0

Esto probablemente funcione, pero considero que es una mala práctica. El EAR debe ser autónomo. – dacracot

+1

Definitivamente una mala práctica. ¿Qué pasa si quieres actualizar este jar? Debería poder hacer eso con una implementación, no debería tener que modificar la configuración del servidor. – cynicalman

1

Está en la especificación JEE5, capítulo 8.2.1 EE:

Un archivo .ear puede contener un directorio que contiene bibliotecas empaquetadas en archivos JAR. El elemento de directorio de biblioteca del descriptor de despliegue del archivo .ear contiene el nombre de este directorio. Si no se especifica un elemento de directorio de biblioteca , o si el archivo .ear no contiene un descriptor de despliegue , el directorio lib es usado.

Cuestiones relacionadas