2009-03-12 7 views
9

Vogliamo generare report incorporati come pagine html in un'app Web o scaricabili come pdf. Quindi mi sono imbattuto in JasperReports perché pensava che avrebbe soddisfatto tutti questi requisiti.JasperReports rappresenta la soluzione appropriata per visualizzare i report in un'applicazione Web?

Attualmente supponiamo che il nostro rapporto abbia circa 50-100 pagine, composto quasi solo da istogrammi e da alcune tabelle. I dati vengono recuperati da alcune costose query dal nostro DB.

Dopo aver valutato tutto il giorno ho diversi dubbi sugli aspetti delle web app.

1) Impaginazione: Ovviamente non voglio visualizzare tutte le pagine in una singola pagina web. Abbiamo bisogno di qualcosa come l'impaginazione. Ma JasperReports sembra non supportare questo approccio. La demo WEPP, che viene fornito con JasperReports, schizzi la strada da percorrere: devo creare un JasperPrint, che è già il rapporto completo, l'allocazione di memoria non desiderati e che ha eseguito le query costose. Quindi potrei visualizzare una singola pagina. Ma farlo ripetutamente per ogni pagina non mi sembra una soluzione adeguata.

2) Come accennato in precedenza, il nostro rapporto sarà costituito principalmente da diagrammi. Le immagini vengono generate durante l'esportazione dello JasperPrint nel formato di output. Se ho capito tutto corretto, il ImageServlet, che viene fornito con JR, è capace, ma recuperare queste immagini siano

i) La lettura delle immagini generate dal file system
ii) l'esportatore ha immagazzinato nella sessione (quindi in memoria).

Dal momento che penso che avremo molte immagini ii) non è un'opzione, se vogliamo mantenere basso l'ingombro di memoria della webapp. Ma d'altra parte inondare il file system con i file non è l'idea migliore che io possa immaginare. Elimina i file da qualche parte?

Ho sbagliato qualcosa? La mia comprensione è corretta?

risposta

3

Impaginazione

'un po' il vostro disegno di servizio come il vostro pageing ist implementato! PDF è un formato di output standalone per problemi di stampa. Non può leggere più dati dal server (senza Web-Services e Reader Extensions). Quindi è possibile definire che JasperReports deve solo un sottoinsieme dei dati per il paging.

Se si definiscono set di dati in JasperReports, è possibile riutilizzarli senza allocare memoria non richiesta.

Immagini

Se si desidera che le immagini nei rapporti e mantenere la tua impronta di memoria insufficiente, scrive un algoritmo di bilanciamento che genera le immagini quando il carico del server è sotto un valore specificato (può essere un valore dinamico dal media dell'ultimo giorno di carico).

Hai bisogno di creare in tempo reale le immagini?Se le immagini sono state create da un servlet, verranno caricate in memoria. Un'app Java. può passare le immagini al ReportGenerator.

immagini caricabili dalla memoria, dal disco o da un URL vedere; Jasper Reports Book P: 170

Le immagini non devono mai essere salvate nella HTTP_SESSION! Questo è un antipattern totale che causa gonfiore della memoria.

+0

cercando quel libro! eccezionale! – frohiky

0

No. Avrai tutti i tipi di problemi.

Penso che sia possibile generare i report in XHTML/CSS e, se è necessario il rendering PDF, è sufficiente utilizzare il renderer XHTML Flying Saucer.

Problemi correlati