• Webservice客户端动态调用服务端功能方法


    一、发布WebService服务
    方式一:在服务端生成wsdl文件,下方客户端直接引用即可
     
      优点:针对要发布的方法生成一个wsdl文件即可,无需多余配置。
      缺点:每次服务端方法发生改变都需要重新生成相应的wsdl文件,不适合于功能需要经常变动的方法。
     
    方式二:在服务端生成WebService的服务端代码,如需变动方法或功能直接进行相关的更改即可。
      
      优点:变更功能、方法等客户端可以动态的调用,服务端一旦变更客户端即可通过动态进行变更引用。
     
     
    二、Client调用服务端接口 
     
    1、 项目架构如下:
     
    2、调用过程:
    1)右键点击项目名称——>“NEW”——>“Other”——>输入WEB service client 如下
     
     
    2)完成出现客户端配置窗口,如下
     
     
    3)在“service definition”中输入webservice开放的服务地址, 注意地址末尾必须加上“?WSDL”
     
    还需注意的是,创建的web service client 必须是3.0以下版本。
     
    4)这个项目中除了 TestClient.java类是自己创建的,其他都是自动生成的。
     
    5)TestClient.java类

    public static void main(String[] args) {
    try {
    CalculateServiceServiceLocator service = new CalculateServiceServiceLocator();
    java.net.URL url = new java.net.URL("http://localhost:8080/WebServiceTest/services/CalculateService?wsdl");
    /* java.net.URL url = new java.net.URL("http://localhost:8080/WebServiceTest/services/CalculateService");*/
    CalculateServiceSoapBindingStub cssbs = new CalculateServiceSoapBindingStub(url, service);
    float f =cssbs.divide(5, 3);
    System.out.println("相除:"+f);

    f =cssbs.plus(3, 6);
    System.out.println("相加:"+f);
    } catch (RemoteException e) {
    // TODO Auto-generated catch block20
    e.printStackTrace();
    } catch (MalformedURLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }




    /* 静态引用Webservice
    * CalculateServiceProxy csp = new CalculateServiceProxy();
    CalculateService cs = csp.getCalculateService();
    try {
    float f=csp.multiply(3, 3);
    System.out.println("乘积:"+f);
    f=cs.divide(5, 2);
    System.out.println("相除:"+f);
    } catch (RemoteException e) {
    e.printStackTrace();
    }*/
    }
    }

    这里主要用到的是***Locator 和***Stub这两个类。

     

  • 相关阅读:
    Leetcode 122. Best Time to Buy and Sell Stock II
    Leetcode 337. House Robber III
    Leetcode 213. House Robber II
    java 常用正则表达式总结
    eclipse异常解决:Errors occurred during the build.........
    关于匿名内部类的理解!
    接口/抽象类的思考
    IO流对文件的读取操作
    标准类的建立,以及用集合对标准类中的元素进行存取操作
    利用集合进行对元素的添加和删除
  • 原文地址:https://www.cnblogs.com/cnblog-long/p/7151418.html
Copyright © 2020-2023  润新知