WebService程序数据集之jws方式

编辑
  • 文档创建者:印然
  • 浏览次数:9017次
  • 编辑次数:19次
  • 最近更新:Kevin-s 于 2019-06-23
  • 1. 准备工作

    1.1 Eclipse 工程下引用 FineReport JAR 包

    当我们在 FineReport 设计器基础上进行二次开发,首先需要引入 FineReport 设计器下的 JAR 包,详细点击 Eclipse 中启动设计器


    1.2 Eclipse 工程下引用第三方 jar包

    Eclipse 中也需要引入%AXIS_HOME%/web-inf/lib下面的 JAR 包,详细点击 引用第三方 JAR 包


    1.3 报表环境引用第三方 JAR 包

    本地 FineReport 设计器访问程序数据集时,将 %AXIS_HOME%/web-inf/lib下面的 JAR 包(不要log4j-1.2.8.jar,会冲突),拷贝到设计器%FR_HOME%/webapps/webroot/WEB-INF/lib 下。


    1.4 axis 服务器搭建

    这里示例使用 axis1.4:下载 axis-bin-1_4.zip, 解压后将 webapps/axis 这个目录复制到 %TOMCAT_HOMT%/webapps/ 下,然后启动 Tomcat, 打开 URL: http://localhost:8080/axis/,axis 部署成功,如下图所示:


    2. 示例

    2.1 WebService 应用服务

    Tomcat 下的 axis 工程中以 JWS 方式发布了一个 WebService 应用服务 TestWS2TDClient.jws,返回一个数组数据。如下:

    新建 TestWS2TDClient.java 文件,内容如下:

    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,编码格式为 GBK,放在%Tomcat_HOME%\webapps\axis\即可。

    访问http://localhost:8080/axis/TestWS2TDClient.jws,如下图:


    点击 Click to see the WSDL,如下图:



    注:若出现报错,提示需要 tools.jar,那么就将 JDK 下面的 tools.jar 放到 axis 的 lib 文件夹中。


    2.2 在 Java 类中访问 WebService 数据源

    JAVA 中发送一个 SOAP 请求,访问 TestWS2TDClient.jws 这个 WebService,得到返回的数据,代码如下:

    try {
    String endpoint = "http://localhost:8080/axis/TestWS2TDClient.jws";
    Service service = new Service(); //创建一个服务(service)调用(call)
    Call call = (Call) service.createCall(); // 通过service创建call对象
    call.setTargetEndpointAddress(new java.net.URL(endpoint)); // 设置service所在URL
    call.setOperationName(new QName("http://localhost:8080/axis/TestWS2TDClient.jws","getTD"));  // 调用service中的getTD方法
    String[][] ret = (String[][])call.invoke(new Object[] {}); // getTD方法没有参数,因此传一个空的对象,得到service中getTD返回的数据
    return ret;
    } catch (Exception e) {
    e.printStackTrace();
    }

    注:SOAP 即简单对象访问协议,客户端发送一个请求,调用相应的对象, 然后服务器返回结果。这些消息是 XML 格式的,并且封装成符合 HTTP 协议的消息。


    2.3 将获得数据转为程序数据集

    访问 WebService 后,该服务会返回数据给客户端,该例中返回一个字符串数组。定义 WebServiceTableData.java 类,扩展 AbstractTableData,将获得的数组数据转为程序数据集。完整代码请参见:

    https://git.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/WebServiceTableData.java


    2.3 编译 class 文件

    将编译好的 WebServiceTableData.class 文件拷贝到%FR_HOME%/webapps/webroot/WEB-INF/classes/com/fr/data文件夹下。


    2.4 设计器中调用程序数据集

    新建报表,定义数据集,选择程序数据集,选择定义好的程序数据集 WebServiceTableData.class,启动 Tomcat 服务器,点击预览,效果如下:



    附件列表


    主题: 二次开发
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]