• WebService学习笔记系列(一)


    webservice主要是解决两个系统或者两个应用程序之间的远程调用,它提供了一种通过web方式访问的api,调用是跨语言、跨平台的。
    webservice的客户端与服务端进行交互的时候使用xml来传递数据。
    soap协议,即简单对象访问协议,它是webservice的客户端与服务端进行交互的时候遵守的一个协议。

    在服务端调用webservice服务时,我们可以通过Java jdk自带的一个命令wsimport,根据服务说明书生成本地Java代码,我们直接操作这些Java代码就可以调用webservice.
    wsimport -d . wsdl地址 生成本地class文件
    wsimport -s . wsdl地址 生成本地java文件,
    wsimport -s . -p 包名 wsdl地址 生成本地java文件,并且指定包名
    然后直接操作这些Java文件来调用服务端程序。
    来看一段代码:
    在服务端发布一个类:

    发布程序,运行main方法,即表示发布:

    public class PublishService {
    
        public static void main(String[] args) {
            //java提供了一个专门的类,用来用来将一个Java应用程序发布成webservice
            /**
             * 两个参数,分别是
             * 1.服务类对外的访问地址
             * 2.服务类的一个实例
             */
            Endpoint.publish("http://127.0.0.1:8888/helloService", new HelloService());
        }
    }

    所发布的类:

    //被发布的类上面必须有@WebService注解
    @WebService
    public class HelloService {
    
        /**
         * 被发布的类中必须包含一个非静态的,非final的public方法
         */
        public void helloWebService(){
            System.out.println("hello webservice!");
        }
    
        public User getUser(){
            return new User("张三","zhangsan");
        }
    }

    User.java

    public class User {
    
        private String username;
        private String nickname;
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getNickname() {
            return nickname;
        }
        public void setNickname(String nickname) {
            this.nickname = nickname;
        }
        public User(String username, String nickname) {
            this.username = username;
            this.nickname = nickname;
        }
    }

    通过wsimport获得服务器端的类:
    这里写图片描述
    成功获得服务器端的类,在F盘可以看到这些类,然后新建一个客户端project,把这些类拷贝进去,在客户端直接操作这些类就可以访问服务端程序:
    客户端程序:

    public class MyTest {
    
        public static void main(String[] args) {
            HelloService helloService = new HelloServiceService()
                    .getHelloServicePort();
            User user = helloService.getUser();
            System.out.println(user.getNickname()+","+user.getUsername());
        }
    }

    客户端输出:

    这里写图片描述
    成功拿到服务端数据。

    如果调用helloWebService()方法

    public class MyTest {
    
        public static void main(String[] args) {
            HelloService helloService = new HelloServiceService()
                    .getHelloServicePort();
            helloService.helloWebService();
        }
    }

    则服务端输出:

    这里写图片描述
    成功调用服务端。
    如果要传递视频,音频图片等消息,可以通过InputStream和OutputStream来实现。
    这是通过wsimport的方式来调用服务端程序,下一篇我们看另外一种调用方式。

  • 相关阅读:
    spring jdbc和spring mybatis没什么很大的区别,为什么要用mybatis优势在哪里
    spring概述及环境搭建
    一些关于使用分区视图的好主意(转)
    正确选择排序提高查询性能(转)
    线程池的原理和连接池的原理
    编程式事务造成的系统频繁Down机的前后
    《Oracle 高效设计》 读书思考标量子查询查询性能讨论
    ORACLE自动备份方法(转)
    Oracle 10gR2 行变列研究
    索引组织表IOT(转)
  • 原文地址:https://www.cnblogs.com/lenve/p/4517994.html
Copyright © 2020-2023  润新知