Liferay viene rilasciato con una serie di jar che potenzialmente si potrebbero voler utilizzare anche su portlet sviluppate secondo il modello "Hot Deploy".
Un esempio di questa necessità potrebbe essere, ad esempio, l'esigenza di inserire un nuovo utente sul portale direttamente dal nostro portlet, giusto per trovare un caso d'uso "facile".
Per farlo, dovremmo utilizzare le api applicative che sono esposte nel file portal-impl.jar
del portale.
Peccato che questo jar sia disponibile solamente all'interno della directory
<
TOMCAT_ROOT>/webapps/ROOT/WEB-INF/lib
E che per usarlo dovremmo replicarlo all'interno della nostra portlet (orrore!:)).
Oltre a questo piccolo side effect, questa soluzione non è nemmeno possibile, perche' lo stesso jar, nel nostro caso portal-impl.jar
, non può essere presente sia nel nostro war che nel path sopra indicato.
Quindi?:)
Possiamo sfruttare una caratteristica offerta da Liferay e potremmo aggiungere alla nostra WEB-INF
il file liferay-plugin-package.properties
.
In questo file, potremmo specificare quali jar, tra quelli presenti all'interno della dir della main webapp (la ROOT), vogliamo aggiungere al classpath del nostro portlet!
Per farlo useremo la chiave portal-dependency-jars
, come in questo esempio:
name=TestPortlet
module-group-id=liferay
module-incremental-version=1
tags=sample
short-description=Dimostrazione di come includere jar
change-log=
page-url=http://blog.d-vel.com
author=D'vel Snc
licenses=LGPL
portal-dependency-jars=\
commons-beanutils.jar,\
commons-collections.jar,\
commons-digester.jar,\
commons-fileupload.jar,\
commons-lang.jar,\
commons-validator.jar,\
oro.jar,\
portal-impl.jar
speed-filters-enabled=false
Ora il nostro portlet potrà aggiungere utenti sul portale sfruttando la api nativa offerta dal portal-impl.jar senza dare grattacapi a chi poi dovrà gestire il sistema e senza replicare codice inutilmente!