Translate

martes, 30 de diciembre de 2014

LIFERAY. ESTE PORTLET HA SIDO DESINSTALADO...

Patrocinador




El siguiente artículo trata sobre un, llamémosle problema que si no llevas tiempo con Liferay, suele dar algunos dolores de cabeza:
"Este portlet ha sido desinstalado. Por favor, instálelo de nuevo o elimínelo de la página".
 O en idioma anglosajón:
"This portlet has been undeployed. Please, deploy it or remove it from the page".
La causa de esto, es que por alguna razón, el registro de la instancia del portlet en cuestión, está mal y, la causa principal, suele ser que se ha eliminado el registro del portlet pero ha quedado una referencia en la página donde aparece, hacia una instancia de éste (las propiedades del portlet instanciado casi siempre).

Vamos con las soluciones.

La primera consiste en simplemente, evitar que aparezca el mensaje, puesto que se trata de un portlet inactivo:

Editamos el fichero (uso Tomcat en el ejemplo):

$TOMCAT/webapps/ROOT/WEB-INF/classes/portal-ext.properties.

Si no estuviera creado, lo creamos en ese momento. En cualquier caso, lo editamos y añadimos o cambiamos la siguiente propiedad:
1: layout.show.portlet.inactive=false
Personalmente, esto lo veo más como una "ñapa" que como una solución ya que la referencia a la instancia inexistente del portlet, sigue en alguna parte.

El principal problema es que no encontramos el enlace para eliminar el portlet de manera definitiva de la página porque no se eliminó anteriormente de la forma adecuada. Sin embargo está ahí, aunque no se vea. Podemos usar Firebug o las herramientas de desarrollo del navegador que se esté usando (Firefox en el ejemplo). Usamos la herramienta de inspeccionar nodos y buscamos el del enlace para eliminar el portlet:

Inspeccionar DOM del portlet
Una vez tenemos localizado el enlace (elemento a, atributo href), copiamos el valor del atributo href y lo pegamos en la barra de direcciones del navegador y pulsamos la tecla [Intro].

Es una buena solución porque elimina las referencias que queden "errantes".

Otra posibilidad bastante más laboriosa consiste en parar el servidor de aplicaciones, eliminar la carpeta del portlet de la carpeta webapps. Acto seguido, eliminar los contenidos de las carpetas $TOMCAT/temp y $TOMCAT/work. Reiniciamos el servidor y redesplegamos el portlet.

Por último, podemos eliminar directamente estas referencias huérfanas en la base de datos. Para ello, visualizamos los registros de la tabla layout. Buscamos el registro correspondiente a la página que tiene la instancia incorrecta del portlet y localizamos el campo typesettings. Eliminamos el valor correspondiente a la instancia del portlet problemático.

Hasta otra y ¡Felices fiestas a todos!