代码之家  ›  专栏  ›  技术社区  ›  SPIRiT_1984

没有OSGi框架的BIRT

  •  2
  • SPIRiT_1984  · 技术社区  · 14 年前

    您好,我们目前正尝试在桌面独立应用程序中集成BIRT,使用的示例来自 here .

    问题是-如何避免使用OSGi框架。我们是否可以将所有必需的库和插件放在生成的EAR中,而不必将报告引擎设置在主页上?因为我们的客户不愿意下载额外的运行时。是否真的需要这么大的运行时间(我猜大约100兆字节)。

    2 回复  |  直到 8 年前
        1
  •  0
  •   Scott Rosenbaum    14 年前

    抱歉,如果不运行OSGi,就无法运行BIRT报告。如果不使用某些模块,则可以对它们进行修剪。例如,图表可以删除,但图表不起作用。显然,您可以删除示例数据库以及支持它的Derby插件。

    在这些明显的项目之后,移除插件变得更加困难。

        2
  •  1
  •   Anthony O.    8 年前

    既然BIRT 3.7,您可以使用 Birt POJO Runtime (可以检查 the Birt website 为它)。

    你唯一要做的就是 呼叫 EngineConfig.setEngineHome(engineHome)

    如果你跟随 BIRT网站 ,您的代码将如下所示:

    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
    }