JasperReports:Java中的fillReport与XML-A数据源(Olap)

时间:2013-07-17 11:03:35

标签: java jasper-reports mdx xmla olap4j

我有 Java 服务,我使用 JasperReports 4.0.5 库生成报告。它适用于标准JDBC数据源。
现在我尝试在olap数据源上运行它,然后将我连接到XML-A服务器。 在使用 iReport 的设计阶段,一切都在运行,但是当我在 Java 中运行时,我在执行时收到错误“NullPointerException”。 我正在使用 olap4j 库来连接数据源,与 iReport 使用的数据源相同 这是代码:

 try{
      Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
      net.sf.jasperreports.engine.util.JRProperties.setProperty("net.sf.jasperreports.query.executer.factory.xmla-mdx", "net.sf.jasperreports.olap.xmla.JRXmlaQueryExecuterFactory");

      final Connection connection =
        DriverManager.getConnection(
            "jdbc:xmla:Server=http://localhost/olap/msmdpump.dll"
            + ";Cache=org.olap4j.driver.xmla.cache.XmlaOlap4jNamedMemoryCache"
            + ";Cache.Name=MyNiftyConnection"
            + ";Cache.Mode=LFU;Cache.Timeout=600;Cache.Size=100"
            + ";Catalog=Test"
            ,null, null);

    OlapWrapper wrapper = (OlapWrapper) connection;
    OlapConnection olapConnection = wrapper.unwrap(OlapConnection.class);

    String fileJrxml = "C:\\report_xmla.jrxml";

    HashMap<String,Object> hm_parameters = new HashMap<String, Object>();

    JasperDesign jasperDesign = JRXmlLoader.load(fileJrxml);
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

    JasperPrint jp = null;

    jp = JasperFillManager.fillReport(jasperReport, hm_parameters, olapConnection);

    // Done
    connection.close();
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

我在哪里做错了?

0 个答案:

没有答案