FineReport中以jws方式调用WebService数据源方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FineReport中以jws方式调用WebService数据源方案相关的知识,希望对你有一定的参考价值。
在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢?
在程序中访问WebService应用服务,将WebService返回的数据转为程序数据集,然后在设计器中调用。
以axis1.4上的WebService为例,介绍其取数方式以及将数据转换为WebService的程序数据集的过程。
WebService应用服务
如在Tomcat下的Axis工程中以jwa方式发布了一个WebService应用服务下TestWS2TDClient.jws,返回一个数组数据,如下:
public class TestWS2TDClient {
public String[][] getTD() {
String[][] a = {{"城市", "销售员", "销售额"},{"江苏", "Anna", "230"},{"江苏", "Alex", "190"},{"江苏","Jack","320"},{"江苏","Apple","210"},{"浙江","Faye","150"},{"浙江","Sammi","280"}};
return a;
}
}
以jws方式发布WebService:将写好的TestWS2TDClient.java文件重命名TestWS2TDClient.jws,放在Tomcat\\webapps\\axis即可。
在java类中访问WebService数据源
Java中发布一个soap请求,访问TestWS2TDClient.java,得到返回的数据,代码如下:
Soap即简单对象访问协议,客户端发送一个请求,调用相应的对象,然后服务器返回结果。这些消息是XML格式的,并且封装成符合HTTP协议的消息。
在此期间需要引入axis.jar、commons-discovery-0.2.jar、commons-logging-1.0.4.jar、wadl4j-a.5.a.jar、log4j-1.2.8.jar、jaxrpc.jar六个包,可以在zxis\\WEB-INF\\lib下找到。
将获得数据转为程序数据集
访问WebService后,该服务会返回数据给客户端,该例中返回一个字符串数组。定义WebServiceTableData.java类,扩展AbstractTableData,将获得的数组数据转为程序数据集。完整代码如下:
将编译好的class文件拷贝到%FR_HOME%/WebReport/WEB-INF/classes/com/fr/data文件夹下。
设计器中调用程序数据集
新建报表,定义数据集,选择程序数据集,选择定义好的程序数据集WebServiceTableData.class,自定义数据集的名称为ds1,启动tomcat服务器,点击预览,效果如下:
以上是关于FineReport中以jws方式调用WebService数据源方案的主要内容,如果未能解决你的问题,请参考以下文章
在 TableViewHeader 中以编程方式调用 IBAction
webservice - 使用JAX-WS注解的方式快速搭建服务端和客户端
在coffeescript中以编程方式/“按字符串”调用函数[重复]
在 SWIFT 2.x 中以编程方式使用 NavigationController 调用 UIViewController