Обновление BIRT 2.5.2 до 3.7.1 - PullRequest
       17

Обновление BIRT 2.5.2 до 3.7.1

0 голосов
/ 06 января 2012

Ранее мы использовали приведенный ниже код для настройки BIRT Engine для использования в нашем сервлете. Руководство по миграции говорит, что вам просто нужно добавить банки BIRT в путь к классам, банки BIRT были добавлены в WEB-INF \ lib.

Когда мы сейчас запускаем приложение, IReportEngineFactory возвращает ноль. Любая помощь приветствуется.

public static synchronized IReportEngine getBirtEngine(ServletContext sc) throws Exception {

    EngineConfig config  = new EngineConfig();
    config.setBIRTHome("");


    config.setLogConfig("C:/Temp", Level.FINEST);
    config.setLogFile("birtLog.log");
    realPath = sc.getRealPath("/reports");
    log.info("Server Info:  " + sc.getServerInfo());
    log.info(" Servlet Context Name:  " + sc.getServletContextName());
    log.info("Real Path:  " + realPath);
    log.info("#####Creating new Birt Engine#####");
    //log.info("Birt Home is: " + config.getBIRTHome());
    IPlatformContext context = new PlatformServletContext(sc);
    config.setPlatformContext(context);
    try {
        Platform.startup(config);
        //log.info("Birt Home is: " + config.getPlatformContext().toString());
        IReportEngineFactory factory =  (IReportEngineFactory) Platform.createFactoryObject
                (IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
        birtEngine = factory.createReportEngine(config);
    }
    catch (Exception e ) {
        throw e;
    }

    return birtEngine;
}

Ответы [ 2 ]

0 голосов
/ 11 марта 2014

На многих постах в сети, которые я читаю, вы не должны больше устанавливать BIRT для дома и платформы. Таким образом, ваш код должен выглядеть примерно так:

public static synchronized IReportEngine getBirtEngine() throws Exception {

    EngineConfig config  = new EngineConfig();
    config.setLogConfig("C:/Temp", Level.FINEST);
    config.setLogFile("birtLog.log");

    try {
        Platform.startup(config);
        IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject
                (IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
        birtEngine = factory.createReportEngine(config);
    }
    catch (Exception e ) {
        throw e;
    }

    return birtEngine;
}
0 голосов
/ 31 января 2012

Добавление следующей строки решило проблему в моей пользовательской конфигурации BirtEngine.java:

IPlatformContext context = new PlatformServletContext(sc);
config.getAppContext().put(EngineConstants.WEBAPP_CLASSPATH_KEY, "");
...