bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Liferay 6.1.0 GA1 e StackOverflowError

Liferay mette da tempo a disposizione degli sviluppatori un comodo plugin di Eclipse (www.liferay.com/community/wiki/-/wiki/Main/Liferay+IDE) per gestire tutte le configurazioni ed i deploy; il suo utilizzo consente infatti di creare nuovi progetti (portlet, temi, ...) all'interno del proprio workspace e di deployarli direttamente nel server interno censito in Eclipse, dando la possibilità di gestire proficuamente hot code deploy, debug, ..., senza l'ausilio dello script Ant.

Recentemente ho lavorato per un progetto sulla versione di Liferay 6.1.0 GA1 (Community Edition), secondo le modalità sopra, senza avere troppi problemi imprevisti.

Arrivati ad un certo punto dello sviluppo il server ha iniziato a sollevare inspiegabili eccezioni di tipo StackOverflowError in seguito a qualsiasi tipo di interazione con le portlet custom che erano state sviluppate; di fatto era diventato inutilizzabile.

Dopo alcune prove e ricerche ho scoperto che il problema erano gli hook, nello specifico la presenza del file liferay-hook.xml all'interno del mio progetto custom; non potendo rimuovere il file (necessario all'applicazione), l'unica soluzione è stata quella di rimuovere il mio progetto dal server interno di Eclipse e di ripristinare l'utilizzo dello script Ant. Avvio ed arresto del server rimangono comunque all'interno di Eclipse.

In conclusione esiste un bug all'interno di una classe di Liferay adibita al deploy che genera questo malfunzionamento; il bug è documentato qui, http://issues.liferay.com/browse/LPS-24723, ed è stato risolto già a partire con il rilascio della versione 6.1.1 GA2.

Enjoy!

Precedente
Commenti
Aggiungi Commento
Simona Cambo
Ciao,
devo inserire un link in una jsp per effettuare il download di un file. Poichè è all'interno di una sezione del Control Panel, ho creato un hook. Avete un esempio?
Mi sono da poco avvicinato a Liferay.
Grazie

Simona
Inviato il 09/07/15 14.02.
Marco Napolitano
Non capisco a cosa ti serva fare un hook; in generale per scaricare un file devi creare una resource url mediante la taglib <liferay-portlet:resourceURL> e gestire la richiesta nel metodo serveResource della tua portlet.
Da lì, attraverso la resourceResponse, puoi impostare il content type della risposta e recuperare l'outputstream su cui scrivere.

Marco
Inviato il 09/07/15 14.02 in risposta a Simona Cambo.
Simona Cambo
Ciao Marco,
ho pensato ad un hook perchè devo inserire la jsp da zero all'interno della gestione utenti, presente in ROOT, e devo creare la classe java con il metodo che gestisce il download. Questa è l'idea che mi sono fatta, se però è sbagliata, puoi darmi per favore delle dritte o comunque un esempio di quanto da te descritto per meglio comprendere. Grazie
Inviato il 09/07/15 14.02 in risposta a Marco Napolitano.
Marco Napolitano
Adesso è più chiaro, va bene l'hook direi.
La classe che gestisce il download è sempre la classe Java della portlet che risponde ad un resource url come ho scritto sopra.
Siccome non puoi fare un hook di una portlet, potresti provare a creare una tua portlet custom e nella jsp fai un resource url che punta alla tua portlet per il download.
Inviato il 09/07/15 14.02 in risposta a Simona Cambo.
Simona Cambo
Ma se creo un hook all'interno del quale metto la mia nuova jsp, non posso anche creare una classe java che estende BaseStrutsPortletAction e nel metodo processAction e render gestisco le operazioni del download? Dico questo perchè ho fatto la stessa cosa con l'upload di un file e gestirei tutto con questo hook integrando la parte di download.
Non capisco perchè se mi dici che va bene l'hook, devo crearmi una portlet custom? Mi manca qualche nozione base?
Inviato il 09/07/15 14.02 in risposta a Marco Napolitano.