Hackeando Liferay 7, modificando ‘portal-kernel.jar’

02-09-2016
 
access-denied

access-denied

De vez en cuando me gusta toquetear donde no toca y se me ocurrió implementar la cache de Liferay sobre Redis para mejorar su rendimiento. Lamentablemente no funcionó por problemas con la ‘serialización’ de objetos en Java. Concretamente cuando se deserializaba el Objeto no encontraba algunas classes(Necesitaría encontrar un sistema con el que hacer el ‘unserialize’ sin necesitar la classe).

Para hacer este tipo de cosas se necesita modificar, por ejemplo en este caso, el fichero ‘portal-kernel.jar’. Para poder modificar las classes del interior yo utilizo el siguiente script. Primero debemos crearnos la siguiente jerarquia de carpetas:

  • origin: donde pondremos el ‘portal-kernel.jar’ original.
  • src: Donde pondremos las classes que deseamos modificar. Solo! Las que quereamos modificar.
  • classes: Donde el script pondrá las nuevas classes compiladas.
  • compiled: Donde se nos generará el nuevo ‘portal-kernel.jar’ y que después copiará al Liferay.

Como os comentaba, simplemente os creáis esta estructura, ejecutáis el siguiente script y reiniciáis Liferay. Fácil verdad:

#!/bin/sh

LIFERAY_HOME='/media/albert/datos/tests/cacheLiferay/liferay-ce-portal-7.0-ga3'
find ./src -name *.java > sources.txt

rm -r ./classes/*
javac \
	-cp "$LIFERAY_HOME/tomcat-8.0.32/webapps/ROOT/WEB-INF/lib/*:$LIFERAY_HOME/tomcat-8.0.32/lib*:$LIFERAY_HOME/tomcat-8.0.32/lib/ext/*:./lib/*" \
	-s "./src" \
	-d "./classes/" \
	@sources.txt

cp ./origin/portal-kernel.jar ./compiled

cd classes
jar uf ../compiled/portal-kernel.jar .

cp ../compiled/portal-kernel.jar $LIFERAY_HOME/tomcat-8.0.32/lib/ext

Por cierto, no os olvidéis de inicializar la variable ‘LIFERAY_HOME’ como toque. Ya podéis modificar el kernel de Liferay al gusto 😀 . Eso si, bajo vuestra propia responsabilidad.

Leave a Reply

© Albert Coronado Calzada