2010-08-30 88 views
2

問候,我們正在嘗試使用來自here的樣本將BIRT集成到我們的桌面獨立應用程序中。沒有OSGi框架的BIRT

問題是 - 如何避免使用OSGi框架。我們可以將所有必需的庫和插件放入生成的EAR中,而無需將報表引擎設置回家嗎?因爲我們的客戶不會很高興需要下載額外的運行時。是否真的需要這麼大的運行時間(大約100兆字節,我猜)。

+0

@S你放棄BIRT ? – 2011-08-26 03:14:26

+0

是的,我們確實 - 首選使用別的東西 – 2011-08-31 09:59:23

+0

你們最終使用了什麼? – lsiu 2011-10-21 08:09:02

回答

0

對不起,但是如果不運行OSGi,真的沒有辦法運行BIRT報告。如果不使用它們,可以修剪一些模塊。例如圖表可能會被刪除,但圖表不起作用。顯然你可以刪除示例數據庫以及支持它的德比插件。

在這些明顯的項目之後,刪除插件變得更加困難。

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 
}