2012-09-10 39 views
6

Estoy usando varios archivos jar en mis portlets, por ejemplo c3p0. Ahora quiero evitar poner las jarras en cada una de las carpetas de lib de mi portlet. ¿Cómo puedo compartir un archivo jar dentro de múltiples portlets? ¿Y cómo debería integrarlos en el Eclipse IDE? Agregue un jar externo o póngalos en un proyecto dedicado e inclúyalos desde allí?¿Cómo compartir el contenedor dentro de múltiples portlets?

+0

Hola, Strauberry, podría tener una solución para ti que resuelva tu problema de JAR cambiante. ¡He tenido exactamente la misma situación! – Jonny

Respuesta

6

Otra solución sería la de poner bajo ../liferay-portal-<version>/tomcat-<version>/webapps/ROOT/WEB-INF/lib

si se colocan aquí se puede añadir el JAR como una dependencia para su portlet de los portlets liferay-plugin-package.properties (si está utilizando Liferay Developer Studio o Liferay IDE a continuación, hay una buena GUI para esto).

Luego, el despliegue Liferay copiará los frascos necesarios de ROOT/WEB-INF/lib a los portlets WEB-INF/lib

Esto creo que es el mecanismo de apoyo Liferay para hacerlo, y no requiere un reinicio debido a que los frascos se copian en los portlets classpath en la implementación.

+0

Hola Jonny, ¡eso suena genial! Solo me queda una pregunta: ¿dónde coloco los archivos jar en mi computadora durante el desarrollo? En mis archivos jar hay archivos de clase de los que quiero usar los métodos (por supuesto jaja). ¿Los agrego como "Frascos externos" a mi proyecto para que el compilador de Java pueda acceder a ellos? – strauberry

+0

Los colocaría donde mejor se adapte a ti, tengo el mío en una carpeta util/additional-libs en mi Liferay Plugins-SDK. También tengo un archivo de compilación ant para cada uno que compila, JAR, y luego copia el JAR en ROOT/WEB-INF/lib. Por lo tanto, cuando se vuelve a implementar el portlet, el JAR actualizado ya está en el lugar correcto para copiarse en el portlet. Sin embargo, si no está utilizando Liferay IDE, sí, agréguelas como JAR externos en la sección "Configurar ruta de acceso de compilación" ... ¡Y descargue Liferay IDE porque recogerá los JAR automáticamente! :) – Jonny

2

Una forma en que puedo pensar es ponerlos a todos en la ruta global.

Por ej. en Tomcat puede colocarlos en ../liferay-portal-<version>/tomcat-<version>/lib/ext y luego, cuando configure la biblioteca de tiempo de ejecución del servidor en eclipse, tendrá estos archivos jar en su ruta de compilación.

Este link también puede ayudarlo a decidir, pero habla por *-service.jar pero no estoy seguro de que funcione con otros frascos en un portlet.

+0

¡Gracias por tu respuesta! ¿Hay alguna forma de usar la interfaz del navegador para implementarlo? Por el momento, estoy cambiando el contenedor comúnmente utilizado (desarrollo pesado), por lo que una copia y pegado manual y reinicio serían muy molestos ... – strauberry

+0

Los archivos en la ruta global de clase necesitan un servidor para reiniciarse. No sé de ninguna otra manera para lograr su requerimiento. Aunque hay herramientas que ayudan a cargar las jarras, incluso sin reinicio del servidor, por lo que puede intentar buscarlas. –

+3

Lo mejor de enviarlo a tomcat/lib/ext es que todas las aplicaciones web compartirán las mismas jarras, cargadas por el mismo cargador de clases. Si está pasando instancias de clases entre aplicaciones web (por ejemplo, a través de una sesión), puede encontrarse con ClassCastExceptions si cada aplicación web tiene sus propias copias. El inconveniente de utilizar lib/ext es que se requiere el reinicio del servidor para implementar nuevas versiones de los jar. –

Cuestiones relacionadas