zoukankan      html  css  js  c++  java
  • webservice 菜鸟探索之旅

    项目背景

      接到的任务是通过调用其他平台厂商提供的webservice接口来获取他们的图片数据把图片下载下来录入我司平台。之前没有接触过webservice,所以开始了这次webservice的菜鸟之旅。

    一.首先去百度查了查简单搭建了一个webservice的服务端和客户端的小demo,用来了解它的工作流程

    服务端搭建

    1.新建一个java项目,目录如下

    2.新建个类,加注解@WebService,主要内容如下

    package webservice_serverDemo;
    
    import javax.jws.WebMethod;
    import javax.jws.WebService;
    import javax.xml.ws.Endpoint;
    
    @WebService  
    public class Test {
        /** 供客户端调用方法  该方法是非静态的,会被发布
         * @param name  传入参数
         * @return String 返回结果
         * */
        public String getValue(String name){
            return "欢迎你! "+name;
        }
    
        /**
         * 方法上加@WebMentod(exclude=true)后,此方法不被发布;
         * @param name
         * @return
         */
        @WebMethod(exclude=true)  
        public String getHello(String name){
            return "你好! "+name;
        }
    
        /** 静态方法不会被发布
         * @param name
         * @return
         */
        public static String getString(String name){
            return "再见!"+name;
        }
    
        //通过EndPoint(端点服务)发布一个WebService
       public static void main(String[] args) {
        /*参数:1,本地的服务地址;
              2,提供服务的类;
         */
        Endpoint.publish("http://127.0.0.1:8080/Test", new Test());
        System.out.println("发布成功!");
        //发布成功后 在浏览器输入 http://localhost:8080/Test?wsdl
       }
    
    }

    3.运行主方法,控制台显示发布成功

     4.浏览器输入 http://localhost:8080/Test?wsdl 可以看到生成的wsdl文件,服务端搭建完毕

    客户端搭建

    1.新建一个java工程

    2.点击工程右键>New>Other>Web service client>填写wsdl地址如下图(确保服务端不要关闭,浏览器访问地址能看到xml)也可以填写的是一个wsdl文件的路径

     finish之后就会发现在src下生成了客户端的文件夹和java类,这时候就可以在客户端调用接口了

    调用一下试试

    package webservice_serverDemo;
    
    import java.rmi.RemoteException;
    import java.util.Iterator;
    
    import javax.xml.rpc.ServiceException;
    
    public class Hello {
        public static void main(String []args) throws RemoteException, ServiceException{
            TestServiceLocator test = new TestServiceLocator();
            Test ports = test.getTestPort();
            System.out.println(ports.getValue("小娜"));
        }
    
    }

    控制台输出,可以看到有一个警告是因为缺少mail.jar和activation.jar,可以自己下载,不加也没有特别大的影响

     回归到项目

      通过上面的小demo可以看出,eclipse能根据wsdl自动生成客户端来调用,非常简单。but,通过平台厂商反馈的wsdl文件发现,由于他们系统十分老旧,生成的wsdl无法用这种方法生成客户端,于是换了一种方法,使用axis1.4生成客户端

    1.下载axis-bin-1_4.zip jar包,解压

    2.进入lib目录下打开cmd 运行

    D:softaxis-1_4lib>java -Djava.ext.dirs=D:softaxis-1_4lib org.apache.axis.wsdl.WSDL2Java -o D:zhuhai -p com.ws D:softaxis-1_4RequestService.wsdl

    //java -Djava.ext.dirs=${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径}  -p${package名} ${wsdl的路径(可以是绝对路径或者url)}

    会报一个这个警告,没有关系,上面提过

    - Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

    3.去${代码输出路径}里可以找到生成的客户端

  • 相关阅读:
    MySQL执行计划extra中的using index 和 using where using index 的区别
    Python + Apache Kylin 让数据分析更加简单!
    性能测试解读:Kyligence vs Spark SQL
    greenplum 表在各个节点数据的分布情况
    postgresql drop表后空间不释放
    PostgreSQL 查看表、索引等创建时间
    postgresql Kill掉正在执行的SQL语句
    linux ps命令查看最消耗CPU、内存的进程
    Linux shell
    TPC-H 下载参考
  • 原文地址:https://www.cnblogs.com/yuxiaona/p/9264908.html
Copyright © 2011-2022 走看看