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
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.
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
Existe compatibilidad de biblioteca compartida en la versión 9: http://e-docs.bea.com/wls/docs92/programming/libraries.html – McDowell
Actualmente estoy usando otro enfoque.
- Crea una carpeta central de repositorio y coloca todas las bibliotecas comunes allí.
- 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.
¿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.
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.
Coloque todos los archivos jar compartidos en la carpeta common \ lib de weblogic. common \ lib es accesible por todas las aplicaciones desplegadas.
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.
- 1. ¿Cuáles son las bibliotecas comunes para C?
- 2. ¿Cuáles son las mejores estrategias para usar múltiples bibliotecas AJAX?
- 3. Setup sonar-runner para múltiples proyectos Java
- 4. Desarrollo de proyectos de aplicación web Java para dos clientes
- 5. ¿Mejores prácticas para desarrollar y usar bibliotecas comunes en el control de versiones?
- 6. Mantenimiento de las referencias de ensamblado .NET comunes a múltiples proyectos
- 7. Maven para proyectos web estáticos
- 8. Cómo compartir contenido web entre proyectos de eclipse
- 9. ¿Cómo aprendo a usar colecciones comunes de Java?
- 10. ¿Cómo usar las bibliotecas Qxt en PyQt?
- 11. cómo incluir bibliotecas en Java sin usar un IDE
- 12. Múltiples proyectos necesitan usar 1 archivo SNK
- 13. ¿Cómo compartir páginas cshtml en múltiples proyectos?
- 14. ¿Cómo se organiza una solución Java en múltiples proyectos, como en Visual Studio?
- 15. ¿Cuál es la mejor manera de hacer que las bibliotecas compartidas estén disponibles para múltiples aplicaciones?
- 16. ¿Cómo debo organizar el control de código fuente para proyectos de Android, incluidas las bibliotecas?
- 17. ¿Es posible usar múltiples ehcache.xml (en diferentes proyectos, misma guerra)?
- 18. ¿Cómo usar las bibliotecas de terceros en glassfish?
- 19. ¿A veces es necesario usar múltiples bibliotecas de JavaScript?
- 20. Proyectos múltiples con Eclipse
- 21. ¿Cómo compartir propiedades comunes entre varios proyectos de maven?
- 22. Múltiples proyectos en trac
- 23. SLOC para proyectos Java
- 24. NuGet para soluciones con múltiples proyectos
- 25. ¿Por qué MSTest no copia las bibliotecas de proyectos referenciadas?
- 26. Para usar o no usar Scala para nuevos proyectos de Java?
- 27. ¿Qué bibliotecas de Java se pueden usar para generar KML?
- 28. ¿Hay un sitio web para buscar funciones comunes ya escritas?
- 29. Bibliotecas temporales para Java
- 30. Optimización de WSImport para WSDL múltiples con tipos comunes
¡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 . –
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) –
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