2016-04-22 9 views
2

Ich habe mich nur gefragt, warum JasperViewer nur auf localhost funktioniert. Wenn ich mein Projekt auf dem Server bereitgestellt habe, können Clients die Berichte nicht mehr anzeigen.Warum funktioniert JasperViewer nur auf localhost?

String reportDir = getServletContext().getRealPath("WEB-INF/classes/com/proj/reports"); 
     String fileName = reportDir + "\\" + request.getParameter("reportName") + ".jasper"; 
     File outReportDir = new File("C:/REPORTS_FOLDER"); 
     outReportDir.mkdir(); 
     long millis = System.currentTimeMillis(); 
     String outFileName = outReportDir + "\\" + request.getParameter("reportName") + "_" + millis + ".pdf"; 
     HashMap parameters = new HashMap(); 
     parameters.put("P_BOOKING_MONTH", request.getParameter("selMonth")); 
     parameters.put("P_BOOKING_YR", request.getParameter("selYear")); 

     try { 
      Connection conn = ConnectionUtil.getConnection(); 
      JasperPrint print = JasperFillManager.fillReport(fileName, parameters, conn); 
      JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter(); 
      exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileName); 
      exporter.setParameter(JRExporterParameter.JASPER_PRINT, print); 
      exporter.exportReport(); 

      JasperViewer.viewReport(print, false); }... 
+0

Bitte fügen Sie den Fehler die Kunden bekommen, wenn die Verbindung zum Server. – Oliv

+0

Siehe http://community.jaspersoft.com/wiki/why-jasperviewer-closing-my-tomcat-server – dada67

+0

@PetterFriberg danke für Ihre Antwort. Aber ich habe es nicht geschafft. Ich bin nur neu in Java und keine Ahnung, wie man ein Applet dafür macht. Übrigens vielen Dank! –

Antwort

0

Sie haben das Ausgabeverzeichnis im Quellcode fest codiert.

Es könnte immer Probleme geben, wie der Server ist keine Windows-Umgebung oder der Ordner "C:/REPORTS_FOLDER" ist nicht auf dem Server.

Es wäre besser, es als konfigurierbare Eigenschaft zu haben.

1

JasperViewer ist ein swing Komponente auf dem Computer gestartet wird, der den Befehl (in der Regel in installierten Anwendungen verwendet wird) ausgeführt wird, also wenn Sie den Befehl auf dem Server ausführen es auf dem Server geöffnet (oder eine HeadlessException werfen, wenn nicht konfiguriert haben einen Bildschirm), Schlussfolgerung wir können diesen Befehl nicht in unserer Server-Anwendung verwenden.

Sie könnten ein applet verwenden Sie den Befehl auf dem Client-Computer zu starten, aber ich empfehle nicht diesen zu verwenden (im Browser die Unterstützung ist decreasing, so dass man nicht sicher sein kann, dass es für alle Clients funktioniert)

Normalerweise, was stattdessen getan wird, ist, dass ein Export nach pdf (html oder anderes Format der Wahl) an Client-Browser gesendet wird, kann Client Datei mit Lieblingsprogramm öffnen und eine Vorschau anzeigen.

In Ihrem Beispielcode exportieren Sie bereits nach pdf, übergeben Sie die pdf direkt an den Client. Daher entfernen

JasperViewer.viewReport(print, false); 
Verwandte Themen