Отключение Glassfish после отображения отчета с помощью jasperReport - PullRequest
0 голосов
/ 09 августа 2011

Я разрабатываю приложение с помощью 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: я обнаружил ту же проблему со стековым потоком, но не нашел решения (я не хочу удалять JasperViewer.viewReport (jasperPrint), потому что для меня тривиально отобразить отчет)

Отчет Jasper Создает PDF, а затем Glassfish аварийно завершает работу / выключается

Ответы [ 2 ]

0 голосов
/ 09 августа 2011

Если проблема возникает из-за строки

JasperViewer.viewReport(jasperPrint);

, вы можете попытаться заключить ее в команду try-catch-Throwable:

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

Здесь важно перехватить Throwable , который является высшим классом Error / Exception иерархии, поэтому он ловит все .В частности, он перехватывает ошибки, которые не проверяются - я подозреваю, что вы можете столкнуться с одним из них.

Однако, если код внутри этого метода вызывает System.exit(), вы можете использовать этот хороший обходной путь .

0 голосов
/ 09 августа 2011

Я не хочу удалять JasperViewer.viewReport (jasperPrint), потому что для меня тривиально отобразить отчет

JasperViewer.viewReport() будет отображать отчет локально (т. Е. На машине с Glassfish) и бесполезен для ваших удаленных пользователей. Что вам нужно сделать, это отправить файл PDF с диска пользователю, чтобы он мог загрузить и открыть его.

Также обратите внимание на: http://jasperreportjsf.sourceforge.net/web/index.html для JSF-интеграции JasperReports.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...