【问题标题】:Glassfish shutdown after displaying a report using jasperReport使用 jasperReport 显示报告后 Glassfish 关闭
【发布时间】:2011-10-23 04:51:32
【问题描述】:

我正在使用 JSF 开发一个应用程序,我正在使用 Glassfish 服务器,该应用程序使用 jasperReport 生成报告,该应用程序工作正常并生成报告(pdf 格式),这些报告存储在我的磁盘上,问题是当我使用

  JasperViewer.viewReport(jasperPrint);

要向用户显示报告,然后尝试继续使用我的应用程序它不起作用,我应该重新运行应用程序!

在控制台上的错误是:

Completed shutdown of Log manager service

我的代码:

public void fillReport() throws ParseException, groovyjarjarcommonscli.ParseException {

    try {
        // - Connexion à la base

        Driver monDriver = new com.mysql.jdbc.Driver();
        DriverManager.registerDriver(monDriver);
        connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/Mybase", "root", "root");

        // - Chargement et compilation du rapport

        JasperDesign jasperDesign = JRXmlLoader.load("C:/Documents and Settings/report2.jrxml");
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        Map parameterMap = new HashMap();

        parameterMap.put("DateFrom", formatingDateTime(date1));
        parameterMap.put("DateTo", formatingDateTime(date2));
        parameterMap.put("SQL", Createquery());
        // // - Execution du rapport
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameterMap, connection);
        JasperViewer.viewReport(jasperPrint);
        JasperExportManager.exportReportToPdfFile(jasperPrint,"C:/Documents and Settings/report2.pdf");




    } catch (JRException e) {

        e.printStackTrace();
    } catch (SQLException e) {

        e.printStackTrace();
    } finally {
        try {
            connection.close();
        }

我应该怎么做才能解决这个问题?

Ps:我在 stackflow 上发现了同样的问题,但没有解决方案(我不想删除 JasperViewer.viewReport(jasperPrint),因为显示报告对我来说很简单)

Jasper Report Generates a PDF and then Glassfish crashes/shutsdown

【问题讨论】:

    标签: java jasper-reports glassfish


    【解决方案1】:

    我不想删除 JasperViewer.viewReport(jasperPrint),因为显示报告对我来说是微不足道的

    JasperViewer.viewReport() 将在本地显示报告(即在运行 Glassfish 的机器上),对远程用户无用。您需要做的是将 PDF 文件从磁盘发送给用户,以便他们下载并打开它。

    还可以查看:http://jasperreportjsf.sourceforge.net/web/index.html,了解 JasperReports 的 JSF 集成。

    【讨论】:

      【解决方案2】:

      如果行

      JasperViewer.viewReport(jasperPrint);
      

      是导致问题的原因,您可以尝试将其包围在 try-catch-Throwable 中:

      try {
          JasperViewer.viewReport(jasperPrint);
      } catch (Throwable t) {
          t.printStackTrace();
      }
      

      这里重要的是捕获Throwable,它是Error/Exception 层次结构的顶级类,因此它捕获所有内容。特别是,它会捕获未经检查的错误 - 我怀疑您可能会遇到其中之一。

      但是,如果该方法中的代码调用System.exit(),则可以使用this nice workaround

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        相关资源
        最近更新 更多