2

有一个系统,它有数据,并且可以通过 Web 服务(例如 Lotus Notes 数据库)提供它的数据。Jasper 可以通过调用 web 服务获取报告的数据吗?

4

4 回答 4

1

您可以通过实现接口JRDataSource来编写自定义数据源。

完整说明:http: //jasperforge.org/uploads/publish/jasperreportswebsite/trunk/sample.reference/datasource/index.html#customdatasource

于 2012-05-22T14:48:55.133 回答
0

你可以,但它可能很快就会变得非常复杂。但是,如果您想走这条路,绝对可以使用JRXmlDataSource。您将必须定义数据源,例如:

new net.sf.jasperreports.engine.data.JRXmlDataSource(
net.sf.jasperreports.engine.util.JRLoader.getLocationInputStream("http://yourserver.com/xml_data_source")

看到这篇文章,有人似乎已经开始了类似的探索,从远程服务器检索 xml 数据以获取报告。

话虽如此,如果您在代码中从服务器获取数据,选择您想要的报告字段并将其传递给您,您的代码可能会少很多工作,并且您的代码可能会更易于维护,例如,一个 JRMapCollection 数据源,特别是如果远程服务提供了一个 wsdl,您可以使用 Apache Axis 之类的工具生成一个客户端。

于 2012-05-22T14:48:24.767 回答
0

现在更好的解决方案是使用 Jasper 数据源 SPI 将您的 Restful 服务作为数据源,就像 JDBC 数据源一样。

http://javattitude.com/2015/07/30/using-rest-web-service-as-data-source-for-jasper-reports/

由于这是通用的,因此编写的一个将适用于您的所有服务。

于 2015-09-11T05:10:31.457 回答
0

现在可以使用 Web 服务数据源

http://community.jaspersoft.com/project/web-service-data-source

这个社区项目实现了一个自定义数据源,使用最新的自定义数据源框架(内部利用数据适配器)构建。

它也在 JasperReports 服务器内部工作:

您可以使用它来填充基于查询的输入控件,以及通过 Topic 使用它的 Ad Hoc Reporting(商业版)。

谢谢

于 2015-10-27T09:30:08.680 回答