Pregunta

Resumen

Es posible que para webapps instalado en linux + tomcat5.5 para usar/ver todos /usr/share/java/ frascos de forma automática?

Detalles

Estoy de embalaje mi java web para Ubuntu (sin embargo, la cuestión está relacionada con cualquier basado en linux distro) y va a hacer que dependen de tomcat.

Me voy a poner descriptor de contexto (un archivo xml) para /usr/share/tomcat5.5/conf/Catalina/localhost/ para hacer que mi aplicación implementada.Tener mi web dir aquí: /usr/share/<appname>/web, cómo puedo activar mi aplicación java jar libs instalado en el sistema (/usr/share/java)?

No puedo simplemente un enlace simbólico /usr/share/java -> <webdir>/WEB-INF/lib, desde que tengo mi costumbre de los frascos deben ser colocados en lib dir.

Mala Solución

La solución que he encontrado hasta ahora es un enlace simbólico a cada frasco <webdir>/WEB-INF/lib/.

Este no es tan bueno, porque tengo un enlace simbólico a un montón de frascos y aun peor el enlace simbólico a todos los tarros de mi dependencia directa lib (jar) requiere (y así sucesivamente).En el caso de mi dependencia directa lib cambios en su lista de los frascos voy a tener que mantener que los enlaces simbólicos.

¿Fue útil?

Solución

Usted no debe hacer eso.Las aplicaciones Java EE son los supuestos para ser autosuficiente y no depender de los recursos fuera del paquete de distribución distintos de los proporcionados por el contenedor.Así que usted debe tomar las libs que necesita de ese directorio y añadirlo a la guerra o el oído paquete.

Esto garantiza que su aplicación se comportará de la misma donde quiera que implementarlo y no estará sujeto a cambios inesperados en las versiones de las librerías en /usr/share/java....

Otros consejos

De acuerdo a el Tomcat classloading documentación, se necesita poner cualquier librerías compartidas que debe estar disponible para todas las aplicaciones Tomcat en el $CATALINA_BASE/shared/lib biblioteca -- entonces, una manera de hacer lo que usted está buscando para hacer es mover las bibliotecas desde /usr/share/java a $CATALINA_BASE/shared/lib.

Pero si no estoy errado de que la misma documentación, Tomcat también hace que el amplio sistema de ruta de clases de la variable contenido disponible para el cargador de clases en el lanzamiento, así que si su directorio -- /usr/share/java -- fueron incluidos en el amplio sistema de ruta de clases de la variable, luego de que debe trabajar demasiado.Nunca he hecho esto, aunque;Tomcat método de hacer que el contenido de $CATALINA_BASE/shared/lib disponible Tomcat-amplio siempre ha servido a mí perfectamente.

entzik la respuesta que me llevan a la siguiente solución.

Voy a usar modificado "mala solución" (véase la pregunta).

Las modificaciones son las siguientes:

  1. Dependen de paquete específico de la versión para todas las dependencias (afecta a "control" archivo aunque el embalaje para el deb)
    ejemplo: libcommons-io-java ( = 1.3.1) en lugar de sólo libcommons-io-java
  2. Enlace real de los archivos jar en "/usr/share/java " y no "generalizado" queridos
    ejemplo:
    webdir/WEB-INF/lib/commons-io.jar -> /usr/share/java/commons-io-1.3.1.jar
    y no
    webdir/WEB-INF/lib/commons-io.jar -> /usr/share/java/commons-io.jar

Este modificaciones garantizar la webapp no se rompe si el administrador ha instalado la nueva versión de una biblioteca (commons-io por ejemplo).

La desventaja es que este enfoque claramente se infla con sistema utilizado-por-solo-una-app versiones de las bibliotecas y puede conducir a la resolución de alguna otra aplicación/biblioteca no se puede instalar debido a la versión de conflictos.Supongo que tanto los posibles problemas son menores si estamos hablando acerca de las bibliotecas.

Usted tiene dos opciones, una es dejar que el cargador de clases de proporcionar a las bibliotecas de todos los programas de java y la otra es dejar que el cargador de clases de proporcionar a las bibliotecas de todos los tomcat contextos.

Agregar su enlace simbólico a /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib (nota: puede que necesite especificar una versión diferente de esta ruta) para permitir que todos los programas de java el acceso a estas bibliotecas o agregarlos a Tomcat bibliotecas compartidas en var/lib/tomcat5.5/shared/libs (de nuevo, el número de versión puede ser diferente) para el acceso por parte de todos Tomcat contextos.

También debo señalar que estas ubicaciones de directorio fueron tomadas de Ubuntu "Luchadora".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top