Portofino 4.0.9 rilasciato
Pubblicato il 18 febbraio 2013 da Alessio Stalla
Siamo orgogliosi di annunciare il rilascio di Portofino 4.0.9! Questa versione è stata guidata dall'obiettivo di eseguire Portofino in ambienti diversi: in primo luogo, su cluster di macchine fisiche o virtuali, e secondariamente su servizi di hosting in cloud come ad esempio Google App Engine, e in ambienti con limitazioni particolari, per esempio un file system in sola lettura. Mirando a questo obiettivo, abbiamo reso Portofino più robusto per tutti, e più facilmente adattabile a nuovi ambienti.
Con questa versione siamo passati alla licenza LGPL. Ciò significa che è più facile usare Portofino in applicazioni commerciali.
Come di consueto, abbiamo anche risolto molti bug e aggiornato alcune delle librerie incluse. Nel seguito trovate le note di rilascio dettagliate.
Supporto per il clustering e il cloud
Un'installazione in ambiente clusterizzato non è mai semplice; Portofino ha sempre avuto alcuni aspetti positivi per la clusterizzazione (ad esempio, utilizza molto poco la sessione HTTP) e altre caratteristiche che erano (e sono!) più problematiche. Una discussione esaustiva di quest'argomento richiederebbe un post dedicato; possiamo comunque dire di aver smussato molti spigoli.
- Portofino ora può girare su un file system in sola lettura, anche se alcune funzionalità non saranno disponibili (in particolare, le funzionalità CMS e i BLOB, che sono basati su file). Molti ambienti cloud, compreso Google App Engine, hanno file system in sola lettura. Portofino darà dei warning se le directory che utilizza non sono scrivibili, ma non annullerà più l'avvio come in passato.
- Abbiamo individuato una soluzione ingegnerizzata per utilizzare la nostra coda affidabile per le e-mail in ambiente clusterizzato.
-
La directory dove sono salvati i blob è configurabile ad un percorso al di fuori della app. E' sufficiente impostare la proprietà
blobs.dir.path
inportofino-custom.properties
. Questo rende più facile il deploy come archivio .war su JBoss e altri application server che scompattano il .war in una directory diversa ad ogni deploy.
Inoltre, Portofino può ora girare, con limitazioni, su Google App Engine (GAE). In questo ambiente, sono disponibili le seguenti funzionalità aggiuntive:
- Supporto per l'autenticazione utilizzando il servizio utenti di Google. Parte di ciò è specifica per l'ambiente GAE; tuttavia, dato che l'infrastruttura degli utenti dell'App Engine è legata alla Servlet API, vi sono possibilità di utilizzo anche in altri scenari di integrazione, per esempio con certe soluzioni di Single Sign-On che siano ben integrate con la Servlet API. Inoltre, ora si possono modificare gli URL per il login ed il logout usati dal framework per farli puntare alla propria action di autenticazione.
- Piattaforma database per Google Cloud SQL (basato su MySQL). Funziona sia in locale che sull'App Engine.
- Gli aggiornamenti della base dati con Liquibase possono essere disattivati, per esempio se il tempo di avvio è problematico in produzione (particularmente vero su GAE) ma si vuole continuare ad usare Liquibase in sviluppo.
- Supporto per OAuth. Abbiamo aggiunto un paio di classi che semplificano l'uso di OAuth per autenticare la propria app su molte API web di largo utilizzo (i servizi di Google, Twitter, Facebook, ecc.) e per memorizzare le credenziali OAuth dei propri utenti nel database, sfruttando la Google OAuth Client Library for Java. L'uso delle nostre classi nelle vostre applicazioni che utilizzano OAuth è completamente opzionale.
- Logging. Portofino si integra con il logging nativo di GAE.
Le limitazioni comprendono:
- Il file system di GAE è read-only, pertanto le funzionalità di CMS e i BLOB non funzionano.
- I grafici non funzionano perché JFreeChart è incompatibile con GAE.
- Le esportazioni PDF non funzionano perché Apache FOP necessita di utilizzare file temporanei.
- Quartz non è supportato su GAE.
Correzione dei bug
- Link e anchor relativi più sensati. In precedenza, linkare all'URL c dalla pagina a/b mandava l'utente alla pagina a/c invece che a/b/c come ci si sarebbe aspettati, e linkare all'ancora #foo dalla pagina a/b puntava ad a#foo invece che ad a/b#foo. Questo è stato corretto: ricontrollate i vostri link relativi!
- Elements non produce più id HTML duplicati in certe situazioni.
- Il wizard è stato oggetti di molteplici correzioni che hanno affrontato i problemi riportati sulla mailing list e altri bug che abbiamo riscontrato.
- Groovy è stato aggiornato alla versione 2.0.6 e pertanto il famigerato bug nel ricaricamento delle dipendenze è risolto!
- Un leak di file temporanei è stato eliminato nelle form con upload di file.
- E molto altro...
Vi invitiamo ad aggiornare alla nuova versione; la si può scaricare dalla pagina di download. Se avete problemi o suggerimenti, visitiate i nostri forum della comunità. Offriamo anche supporto commerciale.