2015-06-28 25 views
7

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:

  1. użytkownik loguje się Jasper
  2. Użytkownik wybiera raport
  3. Jasper nazywa mój wniosek z pewnymi parametrami
  4. Aplikacja tworzy plik xml
  5. Zastosowanie zwraca link do tego pliku
  6. Jasper pokazuje raport

Jaki jest najlepszy sposób na osiągnięcie tego?

Odpowiedz

0

Myślę, że najlepszym sposobem na to jest:.

  • Tworzenie URL w aplikacji, która jest dostępna w każdej chwili i nie wymaga logowania się, jeśli używasz wiosną lub jakiegokolwiek innego ramy, stwierdzając to byłoby dobre, bo mogłem ci pokazać, jak to zrobić.

Istnieje wiele sposobów na skórze tego kota. Daj mi znać, jakich technologii używasz i może zaczniemy od tego. Wprowadziliśmy wymaganie, które właśnie masz.

Dziękuję.

+0

Głosowałem za odrzuceniem, ponieważ ta odpowiedź jest zbyt ogólnikowa. – gordon613

+0

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

+0

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

Powiązane problemy