Kapselung JasperReports Server und Java

MK2014

Mitglied
Hallo,

ich möchte gerne von einer Java-Anwendung aus, einen JasperReport vom einem JRS aufrufen. Dazu verwende ich folgende Code:
Java:
                        WSClient client = server.getWSClient();
			System.out.println("Version Check: " + client.getVersion());
			
			JasperPrint jasperPrint = new JasperPrint();

			try {

				ResourceDescriptor rd = new ResourceDescriptor();
				rd.setWsType(ResourceDescriptor.TYPE_REPORTUNIT);
				rd.setUriString(reportData.reporturi);
				jasperPrint = server.getWSClient().runReport(rd,
						reportData.params);

				// Vorschau anzeigen
				if (reportData.preview!=false)
				{
					// isExitOnClose = wenn die Vorschau geschlossen wird, dann wird die
					// Anwendung beendet (JVM geschlossen)
					JasperViewer.viewReport(jasperPrint, false);
				}
				
				JRPrintServiceExporter jrExporter = new JRPrintServiceExporter();
								
				// Drucker auswählen
				PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
				printServiceAttributeSet.add(new PrinterName(
						reportData.printer, null));

				// Papiersorte auswählen
				PrintRequestAttributeSet printRequestAttributeSet = new HashPrintRequestAttributeSet();
				printRequestAttributeSet.add(MediaSizeName.ISO_A4);
				printRequestAttributeSet.add(new Copies(1));
				printRequestAttributeSet.add(OrientationRequested.PORTRAIT);

				// Datei definieren
				jrExporter.setExporterInput(new SimpleExporterInput(jasperPrint));
				
				// Anzeige Optionen setzen
				SimplePrintServiceExporterConfiguration configuration = new SimplePrintServiceExporterConfiguration();
				configuration
						.setPrintRequestAttributeSet(printRequestAttributeSet);
				configuration
						.setPrintServiceAttributeSet(printServiceAttributeSet);
				configuration.setDisplayPageDialog(false);
				configuration.setDisplayPrintDialog(true);
				
				jrExporter.setConfiguration(configuration);
				
				// Ausführen des Reports
				jrExporter.exportReport();

Nun ist es aber so, dass wenn ich einen Bericht habe, der Paramter verlangt, dass ich diese vom Programm aus übergeben muss. Ich muss also für jeden Bericht eine entsprechende Maske mit den Abfrageparamtern erstellen und dies dann anzeigen lassen.

iReport biete aber in der Vorschau-Anzeige an, dass es die Paramter abfragt. Wenn ich den Bericht direkt vom Server aufrufe in einem Brwoser, werde ich ich auch nach den Paramtern gefragt.

Wie kann ich per Java-Code das Paramter-Fenster, was ja durch iReport erzeugt werden kann, dass ich dass angezeigt bekomme?

Alle Beispiele, die sich mit JasperReports/Java beschäftigen sind "sehr alt" und bieten nicht die Möglichkeit dazu. Außerdem sind sie so veraltet - einige Befehle/Objekte sind mitlerweile als "veraltet" in der Eclipse angezeigt.

Wie gesagt: Bevor der Bericht angezeigt wird, möchte ich, dass die Paramter-Abfrage kommt - etwas, was ja gehen sollte, da iReports die Werte ja auch verarbeiten kann und anzeigt
 

anti-held

Bekanntes Mitglied
Ich habe mir mal ein Stückchen Code geschrieben, dass diesem Zweck dient.
Da ich aber damals eine sehr alte Version von JasperReports verwendet habe, kann ich dir nicht sagen, ob das so noch funktioniert.
Auch werden nicht alle Möglichkeiten gehandelt.

Aber auf dieser Basis könntest du einen für dich passenden Code erstellen.

Da der Code aber recht unvollständig ist, werde ich ihn dir per PM auf Anfrage schicken.
 

MK2014

Mitglied
Danke Anti-Held!

Ich habe mir deine Lösung mal angesehen. Der Ansatz, dass man den Bericht zunächst läd, die Paramter ausliest und dann einzeln abfragt ist eine Möglichkeit. Nur bei meinen Berichten ist dass nicht anwendebar.

Folgende Gründe:
1.) Meine Berichte liegen auf einem JRS. Ich habe also keine lokalen Dateien. Und den ResourceDescriptor in ein JasperReport-Objekt zu wandeln, schlägt fehl - leider
2.) Meine Parameter sind teilweise kaskadierend, d.h. zunächst wählt man ein Land aus und dann eine Stadt. Die Stadt-Auflistung enthält nur Städte aus dem zuvor gewählten Land.

Ich frage mich halt, warum ist es nicht einfach Möglich die Parameter-Eingabebox von iReport aufpoppen zu lassen, wie z.B. der JRViewer. Ich kann da ja sogar einen Druckerauswahldialog anzeigen lassen - nur an die Parameter kommt man irgendwie nicht ran :-(
 

anti-held

Bekanntes Mitglied
Der Ablauf bei JasperReports ist folgender:

1. Erstellen eines JRXML Files.
Dieses wird mit dem IReport Designer erstellt.
Es dient als Vorlage für diese Etiketten.
Es ist auch schon definiert, welche Parameter übergeben werden können etc.

2. Kompilieren des JRXML Files zu einem .japser File.
Es wird ein temporäres File erzeugt.
Oder nur als Objekt im RAM gehalten.
Dieses ist noch unabhängig von den Parametern.
(JasperReport)

3. Erstellen eines JasperPrints aus dem Report
Es wird aus dem Report und den übergebenen Parametern ein fertiges EtikettenObjekt erstellt.
(JasperPrint)

4. Das erzeuge PrintObjekt wird über einen Exporter in ein druckbares Objekt umgewandelt.
Über verschiedene Exporter (z.B. für PDF oder HTML) wird ein ByteStream oder eine gewünschte Datei erstellt.
Ausgabe ist ein druckbares Object oder ein anderes gewünschtes Ausgabeformat (HTML, PDF, XML,...)
(PDF, XML, HTML,...)

Da also auf deinem Server anscheinend nur JasperPrint Objekte liegen, lassen sich die Parameter schon nicht mehr ändern.
Auf dem Server sollten also entweder die JRXML oder JASPER Files liegen.

Oder habe ich da etwas falsch verstanden?
 

MK2014

Mitglied
Meine Berichtsdateien sind auf dem "JasperReports Server" hinterlegt. Das ist ein eigenständiges Produkt von JasperSoft und wird als BI-Lösung vertrieben.

Zugriff auf die Dateien erhalte ich, wie oben im Code hinterlegt, über einen Webservice. Der kann ResourceDescriptor-Objekte herunterladen (welcher Art sie sind, wird über die Parameter eingestellt)

Wenn man den Berichts-Server über einen Browser öffnet und dann den Bericht auswählt, dann erscheint ein Dialog, in dem die Paramerter ausgefüllt werden können.

Verwalten kann man die Berichte direkt am Server oder über iReports (mit dem JRS-Plugin).

JRS bietet die Möglichkeit "Input Controls" zu hinterlegen. Wenn man Parameter öfters benötigt (z.b. Länderliste), dann wird diese einmal "definiert" und der Bericht verlinkt auf das "Input Control". Sollten sich dann Datenquellen oder ähnliches verändern, wird die Änderung nur an einer Stelle nötig. Alle Berichte die das Input Control benutzen sind dann automatisch aktuell.

Wie gesagt, in iReports kann irgendwie der "Dialog" zur Abfrage der Parametern erzeugt werden, wenn man die Vorschau aufruft.

Ich hoffe die Erklärung war jetzt etwas genauer und mein Problem ist besser erkennbar :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Problem mit JasperReports Allgemeine Java-Themen 8
J WARNING: An illegal reflective access operation has occurred, beim Compilieren von JasperReports, was bedeutet das ? Allgemeine Java-Themen 23
A JasperReports (iReports) und openPDF Allgemeine Java-Themen 4
T JasperReports mit Null Pointer Allgemeine Java-Themen 3
C JasperReports, PDF und "Speichern unter"-Dialog Allgemeine Java-Themen 7
S GlassFish und Jasperreports - grauer Report Allgemeine Java-Themen 3
A Jasperreports automatisch ausführen lassen Allgemeine Java-Themen 5
T Probleme mit JasperReports Allgemeine Java-Themen 7
N NoClassDefFoundError bei JasperReports Allgemeine Java-Themen 2
C JasperReports in J2SE 1.4 Allgemeine Java-Themen 2
S Boolean Ausgabe JasperReports Allgemeine Java-Themen 2
J NullPointerException bei JasperReports Allgemeine Java-Themen 2
S JasperReports Tutorials Allgemeine Java-Themen 3
K Verständnissfrage JasperReports / Java Obekte POJO? Allgemeine Java-Themen 9
T html Datei in jrxml Datei (JasperReports) umwandeln Allgemeine Java-Themen 6
K JasperReports -> PDF Allgemeine Java-Themen 9
M Jasperreports Allgemeine Java-Themen 2
foobar Druckausgabe Jasperreports Allgemeine Java-Themen 2
G JasperReports: Verwenden von vorkompilierten Reports Allgemeine Java-Themen 2
S JasperReports: Kompillieren des JasperDesign Allgemeine Java-Themen 5
H Frage zu JasperReports und JRDataSource Allgemeine Java-Themen 3
D JasperReports Allgemeine Java-Themen 5
D Problem mit JasperReports Allgemeine Java-Themen 2
X JasperReports Bibliotheken Einbinden Allgemeine Java-Themen 2
V Suche einfaches JasperReports Tutorial Allgemeine Java-Themen 23
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
E Server Client Audio Allgemeine Java-Themen 6
E Server Client Audio Allgemeine Java-Themen 0
Jose05 Speicherung auf einem Server Allgemeine Java-Themen 1
D Live-Scripting im Server Allgemeine Java-Themen 6
Monokuma Threadproblem mit Sockets und Server Allgemeine Java-Themen 7
T imagej-server NullPointerException Allgemeine Java-Themen 1
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
C Java RMI Client - Server Allgemeine Java-Themen 0
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
M TomEE auf Windows Server 2016 installieren Allgemeine Java-Themen 4
bueseb84 Git : Mehrere Server verwenden Allgemeine Java-Themen 3
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
KeexZDeveoper Zugriff auf Methoden vom Server Allgemeine Java-Themen 7
J Java - hoher Ramverbraucht auf WTS Server Allgemeine Java-Themen 8
C TCP Server und BufferedReader Leerstring im Stream? Allgemeine Java-Themen 5
C Logfile upload zu einem externen filezilla sftp server Allgemeine Java-Themen 6
S Simples Client Server Setup in Java Allgemeine Java-Themen 4
K Server mieten, Berechnungen darauf ausführen Allgemeine Java-Themen 14
Anfänger2011 Java Server oder lieber was anderes Allgemeine Java-Themen 16
F Best Practice Server und Clients Allgemeine Java-Themen 10
E JavaFX RMI extrem langsam wenn Server nicht läuft Allgemeine Java-Themen 5
D Best Practice Java Application Server , Docker oder was? Allgemeine Java-Themen 15
L Suche nach CalDav Server API Allgemeine Java-Themen 0
C Hang Man Server Client Allgemeine Java-Themen 3
C Hang man mit Server/Client Allgemeine Java-Themen 2
K Classpath JDBC Driver auf Server Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
I Installer, der JAVA EE Server und DB installiert Allgemeine Java-Themen 10
P Java Fehler auf Win2008 Server java.io.FilePermission IE8 Version JRE 1.7.0_51 Allgemeine Java-Themen 7
M Dateien aus einem Verzeichnis auf einem Server auflisten Allgemeine Java-Themen 5
M Checksummenprüfung bei Client Server kommunikation Allgemeine Java-Themen 3
C Mit Pc Awendungen auf Server starten Allgemeine Java-Themen 8
B Input/Output Server Startet, Jedoch Kein Output. Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
T Java Streaming-Server & Streaming-Client Allgemeine Java-Themen 4
R Fragen zu Server + UI Allgemeine Java-Themen 2
0 Lösungsweg Client Server Kommunikation Fehlermeldung ausgeben Allgemeine Java-Themen 12
D Client / Server Allgemeine Java-Themen 23
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
U AWT simulierter Tastendruck auf Virtual Server Allgemeine Java-Themen 7
Z Socket [Chatprogramm] Nachrichten vom Server anzeigen lassen Allgemeine Java-Themen 6
E Methoden Server Benutzer abfrage Allgemeine Java-Themen 2
N COM Server ansteuern / KISSsoft Allgemeine Java-Themen 3
N URLConnection - Server abgeschaltet Allgemeine Java-Themen 2
A Parser verursacht Speicherprobleme auf Server Allgemeine Java-Themen 2
T Mit Java auf Dateien zugreifen die auf einem Server liegen Allgemeine Java-Themen 5
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
T jar Archiv auf Server ausführen Allgemeine Java-Themen 3
J Application Server Allgemeine Java-Themen 2
A Input/Output Applet-Zugriff auf PHP-Schnittstelle (externer Server) Allgemeine Java-Themen 22
C game-server GUI erstellen Allgemeine Java-Themen 13
Developer_X Java FTP - Ordner auf Server erstellen Allgemeine Java-Themen 7
C Java Server Pages Problem Allgemeine Java-Themen 6
T Gleichzeitige Zugriffe auf Daten auf dem Server Allgemeine Java-Themen 11
M Server-Responds testen, Code-Redundanz Allgemeine Java-Themen 3
T JPA Entity im Client-Server-Umfeld Allgemeine Java-Themen 19
C Primzahlen Server Allgemeine Java-Themen 3
K Server Daten Visualisieren Allgemeine Java-Themen 3
S FTP Gezippte Datei von FTP Server downloaden Allgemeine Java-Themen 24
T Zeit von einem Server/Webseite auslesen und in eigener GUI anzeigen Allgemeine Java-Themen 6
B verbindung mit exchange server Allgemeine Java-Themen 3
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
H SwingWorker statt Thread für einen Server Allgemeine Java-Themen 2
D Versuch Server - Client anwendung Allgemeine Java-Themen 9
M Frage zum Auslesen einer Datei auf nem Server Allgemeine Java-Themen 4
ruutaiokwu MS Exchange Server 2003 Daten auslesen Allgemeine Java-Themen 2
T Welcher Server? JSP und Client-Anwendung Allgemeine Java-Themen 4
Final_Striker Datei vom Server bekommen Allgemeine Java-Themen 2
H Server Threaded machen. Port-Problem Frage Allgemeine Java-Themen 2
W programm auf server Allgemeine Java-Themen 5
C Java Polling, Server Prozedur oder doch Datenbank? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben