Inicio de mvnForum Bienvenido Guest   | Iniciar sesión
  Búsqueda  
  Indice  | Temas Recientes  | Quién Está en Línea  | Lista de Usuarios  | Nuevo Usuario  | Búsqueda  | Ayuda  | RSS feeds


Ir a »
Estado del tema: Normal
Total de mensajes en este tema: 1
[Añadir a Mis Favoritos] [Añadir un aviso a este tema] [Publicar nuevo tema]
Autor
Tema Anterior Este tema ha sido visto 29923 veces y tiene 0 respuestas Tema Siguiente
Masculino J.Alberto
Stranger



Ingresó: 27-feb-2009
Mensajes: 11
Estado: Desconectados

Problemas de rendimento al abrir galerías en OpenCMS 9.5.3 Responder a este mensaje
Responder citando

Buenos días a todos!

Tenemos una web con OpenCMS 9.5.3 en la cual estamos teniendo un problema de rendimiento al abrir enlaces dentro de un contenido estructurado (vía VFSWidget), o bien cuando intentamos abrir una galería de descargas o imágenes desde el editor de texto. Después de "debuggear" el código, nos encontramos que en el método "getGalleriesByType" de la clase "org.opencms.ade.galleries.CmsGalleryService" del core de OpenCMS, intenta leer todos los recursos de la instancia para encontrar los diferentes archivos. Aquí el código original:



try {
galleries.addAll(
getCmsObject().readResources(
"/",

CmsResourceFilter.ONLY_VISIBLE_NO_DELETED.addRequireType(galleryTypeId)));
} catch (Exception e) {
LOG.error("Could not read site galleries: " +
e.getLocalizedMessage(), e);
}








En sitio web pequeño esto no supone un problema, pero en nuestro caso, con miles de archivos y más de 300 OUs hace que sea impracticable. Para solucionarlo hemos tocado el core haciendo que solamente lea los recursos del proyecto al cual pertenece el usuario que intenta abrir las galerías. El problema es que no queremos tener que tocar el núcleo, por lo que nos gustaría saber si alguien está en nuestra situación o conoce una manera más limpia para sortear este problema.

Os pego el código del método que hemos dejado:




/**
* Generates a list of available galleries for the given gallery-type.<p>
*
* @param galleryTypeId the gallery-type
*
* @return the list of galleries
*
*/
private List<CmsResource> getGalleriesByType(int galleryTypeId) {

List<CmsResource> galleries = new ArrayList<CmsResource>();

List ouresources = new ArrayList();

try {

CmsOrgUnitManager oumanager = OpenCms.getOrgUnitManager();
//Read OU resources
ouresources.addAll(
oumanager.getResourcesForOrganizationalUnit(
getCmsObject(),
getCmsObject().getRequestContext().currentProject().getOuFqn()));

//If root read "/"
if (getCmsObject().getRequestContext().currentProject().getOuFqn().equals("")) {

galleries.addAll(
getCmsObject().readResources(
"/",
CmsResourceFilter.ONLY_VISIBLE_NO_DELETED.addRequireType(galleryTypeId)));
} else {
for (int k = 0; k < ouresources.size(); k++) {
// get the galleries of the current site
CmsResource r = ((CmsResource)ouresources.get(k));

galleries.addAll(
getCmsObject().readResources(
getCmsObject().getRequestContext().removeSiteRoot(r.getRootPath()),
CmsResourceFilter.ONLY_VISIBLE_NO_DELETED.addRequireType(galleryTypeId)));
}
}
} catch (CmsException e) {
// error reading resources with filter
LOG.error(e.getLocalizedMessage(), e);
}

return galleries;

}




Muchas gracias a todos!


Saludos!
[14-mar-2017 12:56:35] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
[Versión imprimible] [Publicar nuevo tema]