2016-04-22 9 views
2

なぜJasperViewerはlocalhost上でのみ動作するのだろうと思っていました。プロジェクトをサーバーに展開すると、クライアントはレポートをもう表示できなくなります。なぜJasperViewerは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

を削除し、サーバーへの接続時にクライアントが取得しているエラーを追加してください。 – Oliv

+0

http://community.jaspersoft.com/wiki/why-jasperviewer-closing-my-tomcat-serverを参照してください。 – dada67

+0

@PetterFribergご回答いただきありがとうございます。しかし、私はそれをしなかった。私はちょうどJavaの初心者で、これのためにいくつかのアプレットを作る方法は考えていません。ところで、ありがとう! –

答えて

0

出力ディレクトリをソースコードにハードコードしました。

サーバがWindows環境やフォルダでないなどの問題が常に発生する可能性があります。"C:/ REPORTS_FOLDER"はサーバーに存在しません。

設定可能なプロパティとして持つ方がよいでしょう。

1

JasperViewerはに設定されていない場合は、それがサーバー上で開きますサーバー上でコマンドを実行する(またはHeadlessExceptionを投げるので、場合、それは(通常はインストールされたアプリケーションで使用される)コマンドを実行するコンピュータ上で起動されるswingコンポーネントです結論として、サーバーアプリケーションでこのコマンドを使用することはできません。あなたは、クライアントコンピュータ上でコマンドを起動するappletを使用することができますが、私は強くこれを使用しないことをお勧めします

(ブラウザでのサポートがdecreasingあるので、あなたはそれがすべてのクライアントのために働いていることを確認することはできません)

通常、代わりにのpdfへのエクスポート(HTMLまたはその他の形式の選択)がクライアントブラウザに送信され、クライアントはお気に入りのプログラムでファイルを開いてプレビューできます。

サンプルコードでは、既にPDFにエクスポートしていますので、pdfを直接クライアントに渡してください。したがって

JasperViewer.viewReport(print, false); 
関連する問題