zoukankan      html  css  js  c++  java
  • 【转】webservice

    一、WebService概念

    Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

    XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

    Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。(Soap=HTTP的基础上+xml数据)。

    WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

    UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

    上面说了这么多。。是不是有点晕啊。。上面的慨念都是copy过来的。

    原理如上,我有一个java开发的OA系统想要调用网上已存在的天气预报接口来获取天气预报功能。要实现这样的功能就可以采用webservice。。从上述描述看。webservice就是一个跨平台,跨语言的远程调用。首先我们需要知道天气预报的相关信息,如它发布的地址位置信息,提供的接口及方法等。我们可以通过它的wsdl进行查看,其实wsdl就相当于给调用者提供一个开发文档。

    1 提供方发布服务实例

    复制代码
    package com.lc.webservice;
    
    import javax.jws.WebService;
    import javax.xml.ws.Endpoint;
    
    @WebService
    public class WebServicePublish {
    
        public String helloWord(String name){
            return name;
        }
        public static void main(String[] args) {
            Endpoint.publish("http://127.0.0.1:6789/hello", new WebServicePublish());
        }
    }
    复制代码

    static方法将不会暴露给使用方。因此发布的服务中只提供hellword给使用方。在类上使用注解@WebService,表明此类可以作为webservice服务供使用方使用,Endpoint提供了静态方法publish.其中包括两个参数,第一个是发布的地址位置。第二个表明发布服务的具体实例。运行之后,我们通过http://127.0.0.1:6789/hello?wsdl就可以查看自动生成的WSDL信息了。此时发布服务已成功。那么如何调用该服务的方法呢?

    JDK1.6及以上版本提供了自动生成webservice客户端代码的功能。

    输入以上命令 自动生成webservice客户端代码,其中-s 后面加上生成代码的路径信息.在加上WSDL的路径信息。

    将生成的java文件copy到eclipse包中,并写测试类进行调用测试。

    2 客户端代码如下:

    复制代码
    package com.lc.webservice;
    
    public class app {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            WebServicePublishService web = new WebServicePublishService();
            WebServicePublish publish =web.getWebServicePublishPort();
            System.out.println(publish.helloWord("liuchao"));
            
        }
    
    }
    复制代码

    如下WSDL所示

    先获取service的名称。再获取端口信息。。再通过绑定的端口信息。获取发布的方法。。

  • 相关阅读:
    Bit Manipulation
    218. The Skyline Problem
    Template : Two Pointers & Hash -> String process
    239. Sliding Window Maximum
    159. Longest Substring with At Most Two Distinct Characters
    3. Longest Substring Without Repeating Characters
    137. Single Number II
    142. Linked List Cycle II
    41. First Missing Positive
    260. Single Number III
  • 原文地址:https://www.cnblogs.com/yangjian-java/p/6183689.html
Copyright © 2011-2022 走看看