Mam serwer raportów Jasper (zainstalowany na www.example.com) i osobną aplikację Java/JSP (zainstalowaną na www.example.net), a także szukam różnych opcji generowania raportów.Komunikacja między Jasperem i inną aplikacją
Wariant 1 (prąd roztwór roboczy)
My obecnie rozwiązaniem jest to, że użytkownik loguje się do aplikacji Java/JSP i wybiera raport. Aplikacja tworzy reprezentację XML raportu, który jest zapisywany jako fileNameXML
a następnie wysyła je do Jasper Reports Server przy użyciu kodu, takich jak:
<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>
(Należy pamiętać, że chociaż mogę przekazać nazwę użytkownika i hasło w adresie URL, bezpieczeństwo nie jest zagrożone, ponieważ filenameXML jest tworzony przy użyciu String fileName = UUID.randomUUID().toString() + fileExt;
)
Opcja 2
połączyć Reports Jasper serwer bezpośrednio do bazy danych SQL Server na www.example.net i produkować raporty w ten sposób. Wadą tego podejścia jest to, że (a) musiałbym skonfigurować wszystkich użytkowników w raportach Jaspera (b) musiałbym przekazać parametry w sposób zapewniający bezpieczeństwo, tak aby każdy użytkownik mógł uzyskać dostęp tylko do własnych danych (c) mam tylko dostęp do bazy danych, a nie do obliczeń mojego wniosku
My Idealne rozwiązanie
jednak naprawdę chciałbym, aby móc uzyskać dostęp do obliczeń mojego wniosku przez Jaspera i rejestrowanie bypass w mojej aplikacji.
Jedną z zalet tego jest to, że moja aplikacja nie ma jeszcze odpowiedniego dostępu mobilnego, a użytkownicy mogą pobrać aplikację Jasper Mobile Application i uzyskać dostęp do raportów z tego miejsca.
Wiązałoby następujące:
- użytkownik loguje się Jasper
- Użytkownik wybiera raport
- Jasper nazywa mój wniosek z pewnymi parametrami
- Aplikacja tworzy plik xml
- Zastosowanie zwraca link do tego pliku
- Jasper pokazuje raport
Jaki jest najlepszy sposób na osiągnięcie tego?
Głosowałem za odrzuceniem, ponieważ ta odpowiedź jest zbyt ogólnikowa. – gordon613
W jaki sposób zajmujesz się śledzeniem logowania/sesji? Ponownie, koncepcja, ponieważ jest to koncepcja, jest niejasna. I pytasz o podejście do problemu, który próbuję określić, czy to działa dla ciebie. Gdybym to zaimplementował, używając Springa. Posiadam przechwytywacz, który sprawdza, czy żądania adresów URL pojawiają się w mojej aplikacji. Jeśli uderzę w konkretny adres URL, np. "MyApp/getCalculations", pomijam funkcję sprawdzania logowania/sesji i dostarczę żądającemu wszystkie potrzebne informacje, być może za pośrednictwem serializowanego obiektu, ciągu znaków, json itp. (Niezależnie od tego, co żąda). Pozdrawiam! – Miki
Dziękuję za odpowiedź. Powiedzmy, że utworzę adres URL, który wykonuje obliczenia (i pomija logowanie, jak sugerujesz), jak zasugerowałbyś, że jaspis komunikuje się z tym adresem URL. W szczególności, jak by to nazwać i jak otrzymałby dane XML, które ten URL wygenerowałby? – gordon613