2010-08-30 2 views
2

Приветствуем, мы в настоящее время пытаемся интегрировать BIRT в автономное приложение для настольных компьютеров, используя образцы от here.BIRT без рамки OSGi

Вопрос в том, как избежать использования рамки OSGi. Можем ли мы поместить все необходимые библиотеки и плагины в полученный EAR без необходимости установки механизма отчета? Потому что наши клиенты не будут довольны необходимостью загружать дополнительное время выполнения. И действительно ли нужна такая огромная среда исполнения (я думаю, около 100 мегабайт).

+0

@S ли вы отказаться от BIRT ? –

+0

Да, мы сделали - предпочли использовать что-то еще –

+0

Что вы, ребята, в конечном итоге используете? – lsiu

ответ

0

Извините, но на самом деле нет способа запуска отчетов BIRT без запуска OSGi. Вы можете обрезать некоторые из модулей, если вы их не используете. Например, диаграмму можно удалить, но диаграммы не будут работать. Очевидно, что вы можете удалить базу данных примеров и поддерживающие ее плагины.

После этих очевидных элементов становится намного сложнее удалить плагины.

1

С Birt 3.7 вы можете использовать Birt POJO Runtime (вы можете проверить the Birt website).

Единственное, что вам нужно сделать, это не вызова EngineConfig.setEngineHome(engineHome)

Если следовать the Birt website, ваш код будет выглядеть следующим образом:

try{ 
    final EngineConfig config = new EngineConfig(); 
    //As of 3.7.2, BIRT now provides an OSGi and a POJO Runtime. 

    //config.setEngineHome("C:\\birt-runtime-2_6_2\\birt-runtime-2_6_2\\ReportEngine"); 
    config.setLogConfig("c:/temp", Level.FINE); 

    Platform.startup(config); 
    //If using RE API in Eclipse/RCP application this is not needed. 
    IReportEngineFactory factory = (IReportEngineFactory) Platform 
      .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
    IReportEngine engine = factory.createReportEngine(config); 
    engine.changeLogLevel(Level.WARNING); 
}catch(Exception ex){ 
    ex.printStackTrace(); 
} 
// Run reports, etc. 
... 

// destroy the engine. 
try 
{ 
    engine.destroy(); 
    Platform.shutdown(); 
    //Bugzilla 351052 
    RegistryProviderFactory.releaseDefault(); 
}catch (EngineException e1){ 
    // Ignore 
} 
Смежные вопросы