2009-06-30 12 views
6

Tengo cuatro proyectos diferentes y estoy usando Weblogic para implementar mis proyectos. Hay varias bibliotecas (archivos jar) que son comunes para todos los proyectos. Actualmente, cada uno de mis proyectos tiene el directorio lib y tiene casi el mismo conjunto de bibliotecas. Ahora, es posible tener este directorio lib fuera de los archivos WAR y acceder a ellos.Cómo usar las bibliotecas comunes para múltiples proyectos web de Java

Respuesta

8

Resista la tentación de poner los archivos jar en la carpeta "compartida" de su contenedor. Es mejor mantener los archivos jar donde están ahora. Puede sonar una buena idea usar una carpeta compartida ahora, pero en el futuro puede necesitar implementar una aplicación que requiera una biblioteca compartida, pero una versión diferente.

Dicho esto, no tengo experiencia con WebLogic. En Tomcat hay una carpeta compartida con bibliotecas comunes para todas las aplicaciones implementadas. No es una buena idea usar esto. Si WebLogic se puede configurar para usar una carpeta compartida por un conjunto de aplicaciones (y no para todas las aplicaciones implementadas), puede hacerlo.

+1

¡Un buen consejo! Hay muy poca sobrecarga para tener una copia extra de un archivo jar, mientras que tener que mezclar dos versiones de una biblioteca común desde la misma ubicación o forzar todas las aplicaciones a actualizar a una nueva versión en el mismo momento es un verdadero dolor . –

+0

En realidad, después de compilar el tamaño del proyecto es de alrededor de 1,5 mb (sin libs) y 20 mb (con libs) –

+0

Puede usar la carpeta compartida en su máquina de desarrollo para acelerar la implementación. En un entorno de producción, esto no tiene demasiada importancia, por lo tanto, prefiera un gran archivo WAR con todos los archivos dentro. Si lo hace, debe realizar las pruebas dos veces (tanto para WAR pequeños como para grandes). – kgiannakakis

0

Bueno, antes que nada puedes poner tus libs todas en el mismo lugar y hacer que tu proceso de compilación importe las necesarias.

Tiene para en implementar el nuevo Weblogic 10 tiene una carpeta lib en cada dominio donde puede poner bibliotecas compartidas. no creo que eso sea posible antes de Weblogic 10

+1

Existe compatibilidad de biblioteca compartida en la versión 9: http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell

-1

Actualmente estoy usando otro enfoque.

  1. Crea una carpeta central de repositorio y coloca todas las bibliotecas comunes allí.
  2. En cada proyecto puede crear una referencia a todas las bibliotecas necesarias. En Subversion funciona con externals

Cada vez, la copia de trabajo local se actualiza, lo externo se actualizan para, por lo que sólo tiene que comprometerse a la carpeta central y se distribuye automáticamente a todos los proyectos.

3

¿Desea hacer esto? A menos que estés atascado por el espacio de implementación, yo (tal vez) desaconsejaría.

¿Por qué? Por el momento, tienes 4 soluciones ejecutándose en estas librerías. Si tiene que actualizar una de las bibliotecas (por ejemplo, si descubre un error o si necesita una nueva característica), tendrá que probar la compatibilidad y la funcionalidad de las 4 soluciones. Si cada solución tiene su propio conjunto de libs, entonces están en modo de espacio aislado y no es necesario mover las 4 en el paso.

Tenga en cuenta que todo esto depende de qué tan fácil es realizar pruebas de regresión de sus soluciones. Puede encontrarlo fácil, en cuyo caso es factible usar el mismo conjunto de bibliotecas.

2

No hagas eso.

La idea de los archivos WAR es que son unidades autónomas. Esto hace que la implementación sea mucho más fácil.

Además de los posibles conflictos de versiones que otros han señalado, poner archivos jar en/shared puede tener consecuencias muy anidadas para la visibilidad de clase. Estarán en un cargador de clases separado y no podrán ver las clases en el archivo WAR. Si usa bibliotecas que dependen de Class.forName() para funcionar (y hay muchas), esto podría ser muy doloroso.

Si realmente no puede permitirse el espacio extra de disco y la memoria, mire OSGi o Spring DM.Han resuelto este problema, pero a costa de una mayor complejidad.

1

Coloque todos los archivos jar compartidos en la carpeta common \ lib de weblogic. common \ lib es accesible por todas las aplicaciones desplegadas.

0

Puede colocar las jarras en su propio archivo ear y desplegarlo como una biblioteca compartida.

También puede poner las guerras en un oído y agregar los archivos compartidos a APP-INF/lib. Esta es una extensión Weblogic de J2EE, por lo que no funcionará en otros servidores.

Cuestiones relacionadas