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?
Respuesta
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.
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
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
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.
¡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
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. –
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. –
- 1. ¿Cómo compartir páginas cshtml en múltiples proyectos?
- 2. Evening in Liferay Portlets
- 3. Cómo compartir el conjunto de conexiones entre múltiples aplicaciones Java
- 4. CodeIgniter: Aplicaciones múltiples, ¿cómo compartir recursos?
- 5. ¿Cómo implementar portlets en Liferay?
- 6. ¿Cómo puedo compartir bibliotecas que no sean OSGi entre paquetes en un contenedor OSGi?
- 7. Portales y portlets de Java
- 8. ¿Cómo agrego portlets de stock (desde plone.app.portlets) a mi administrador de portlets personalizado?
- 9. div deslizable dentro del contenedor
- 10. Cómo consolidar la aplicación de múltiples raíles y compartir recursos
- 11. Restricciones/desventajas de desarrollar portlets para Liferay
- 12. Contar el total de hijos divs dentro de un contenedor
- 13. Cómo personalizar los portlets para mostrar en "Añadir más portlets" menú
- 14. cargar archivo dentro de un contenedor
- 15. Obteniendo objeto contenedor/padre dentro de python
- 16. Por qué el posicionamiento absoluto dentro del contenedor requiere que el contenedor sea relativo
- 17. `With` uso dentro de la función (contenedor)
- 18. Cómo compartir App.config?
- 19. ¿Cómo seleccionar dentro de un contenedor con jQuery?
- 20. CSS div fijo dentro del contenedor
- 21. ¿Cómo puedo colocar una imagen girada dentro de un contenedor?
- 22. ¿Cómo puedo compartir una sesión en múltiples subdominios en ASP.NET?
- 23. ¿Cómo accedo a un archivo de configuración dentro del contenedor?
- 24. Cómo compartir los mismos datos entre múltiples actividades
- 25. Rieles: ¿cómo puedo compartir cookies permanentes en múltiples subdominios?
- 26. ¿Cómo 'compartir' la autenticación NTLM en múltiples HttpWebRequests?
- 27. Cómo agregar portlets anidados (liferay) a través del código
- 28. jquery ui desplazable arrastrando dentro del contenedor
- 29. ¿Cómo ejecuto un contenedor desde el interior de un contenedor?
- 30. Pruebas de selenio para portlets personalizados
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