Possiedo Jasper Reports Server (installato su www.example.com) e un'applicazione Java/JSP separata (installata su www.example.net) e sto perseguendo diverse opzioni per generare report.Comunicazione tra Jasper e un'altra applicazione
Opzione 1 (soluzione di lavoro corrente)
La mia soluzione di lavoro corrente è che l'utente accede l'applicazione Java/JSP, e seleziona un rapporto. L'applicazione crea una rappresentazione XML del report, che consente di risparmiare come fileNameXML
e allora poi lo invia al Jasper Reports Server utilizzando il codice come il seguente:
<IFRAME height="600" width="1000" src="https://www.example.com/jasperserver/flow.html?
_flowId=viewReportFlow&standAlone=true&_flowId=viewReportFlow&
ParentFolderUri=%2Freports&
reportUnit=%2Freports%2FExample_Report_2&j_username=user&
j_password=password&
net.sf.jasperreports.xml.source=https://www.example.net/<%=fileNameXML%>">
</IFRAME>
(Si noti che, anche se mi passa un nome utente e password nella URL, la sicurezza non è compromessa in quanto il filenameXML viene creata usando String fileName = UUID.randomUUID().toString() + fileExt;
)
Opzione 2
mi connetto Jasper Reports Server direttamente al database di SQL Server su www.example.net, e produco riporta in questo modo. Lo svantaggio di questo approccio è che (a) avrei bisogno di impostare tutti gli utenti in Jasper Reports (b) Avrei bisogno di passare i parametri in un modo attento alla sicurezza in modo che ogni utente possa accedere solo ai propri dati (c) ho solo l'accesso al database, e non i calcoli della mia applicazione
My Ideal Soluzione
Tuttavia mi piacerebbe davvero essere in grado di accedere ai calcoli della mia applicazione tramite Jasper, e la registrazione di bypass nella mia domanda.
Un vantaggio di questo è che la mia applicazione non ha ancora un accesso mobile adeguato e gli utenti possono scaricare l'app Jasper Mobile Application e accedere ai report da lì.
Ciò comporterebbe i seguenti:
- utente accede Jasper
- seleziona User rapporto
- Jasper chiama la mia applicazione con determinati parametri
- applicazione crea file XML
- applicazione restituisce un link a questo file
- Jasper mostra report
Qual è il modo migliore per raggiungere questo obiettivo?
Ho down-votato perché questa risposta è troppo vaga – gordon613
Come stai gestendo il tuo login/sessione di monitoraggio? Ancora una volta, il concetto, dal momento che è un concetto, è vago. E stai chiedendo un approccio al problema che è quello che sto cercando di capire se funziona per te. Se dovessi implementarlo, usando Spring. Avrei un Interceptor che controlla le richieste di URL che arrivano nella mia app. Se premo un URL specifico, ad esempio "myApp/getCalculations", ignorerò la funzionalità di login/session checking e fornirò al richiedente tutte le informazioni di cui ha bisogno, magari attraverso un oggetto serializzato, una stringa, json, ecc (qualunque sia il richiedente capisce). Saluti! – Miki
Grazie per la risposta. Diciamo che creo un URL che esegue i calcoli (e ignora il login come suggerisci), come suggeriresti che jasper comunichi con questo URL. Specificamente come lo chiamerebbe, e come riceverebbe i dati XML che questo URL produrrebbe? – gordon613