zoukankan      html  css  js  c++  java
  • webservice

    MonsterCoder

    我们先看下webservice有关知识点:

    webservice就是远程调用技术,也叫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。

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

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

    然后我们做一个快速demo,来感受下webservice

    package com.cyy.service;
    
    import javax.jws.WebService;
    
    @WebService
    public interface IHelloWorld {
        public String syaHello();
    }
    package com.cyy.service;
    
    import javax.jws.WebService;
    
    @WebService(endpointInterface="com.cyy.service.IHelloWorld")
    public class HelloWorldImpl implements IHelloWorld {
    
        @Override
        public String syaHello() {
            return "helloWorld";
        }
    
    }
    package com.cyy.service;
    
    import javax.xml.ws.Endpoint;
    
    public class HelloWorld {
    
        public static void main(String[] args) {
            //确定一个在网上发布的地址address
            String address = "http://localhost:6666/hello";
            //发布
            Endpoint.publish(address, new HelloWorldImpl());
        }
    
    }
    
    

    package com.cyy.service;

    
    

    import java.net.MalformedURLException;
    import java.net.URL;
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;

    
    

    public class TestClient {

    
    

    public static void main(String[] args) {
    try {
    // 创建访问wsdl服务地址的url
    URL url = new URL("http://localhost:6666/hello?wsdl");
    // 通过Qname指明服务的具体信息
    QName name = new QName("http://service.cyy.com/", "HelloWorldImplService");
    Service service = Service.create(url, name);
    IHelloWorld ih = service.getPort(IHelloWorld.class);
    System.out.println(ih.syaHello());
    } catch (MalformedURLException e) {
    e.printStackTrace();
    }
    }

    }

    这里其实会有一个问题,我们用这种方式去使用接口的时候,我们依然需要依赖IHelloWorld接口,这个就很不合理了,不应该依靠对方的服务平台而是需要依赖自己的服务平台

    闲话不多说,其实我们可以通过wsimport轻松的导入我们的webservice,首先我们先来看一下里面的命令

    生成客户端代码只需要一条命令(ps:java6版本之后都有这个命令)

    -d:指定文件输出位置
    f:/webservice/demo01:我在f盘建的目录
    -keep:保留生成文件
    wsimport -d f:/webservice/demo01/ -keep -verbose http://localhost:6666/hello?wsdl

    我们去文件夹中看一下是否生成了java文件

     

    我们新建一个项目webservice_demo02将生成的文件导入到我们的项目中,再把测试类放进去运行下

     

    OK,我们在这个测试过中和生成客户端文件的过程中一定要注意:发布服务的类一定要运行!!!

    好了,今天就到这。接下来我会陆续往服务中添加更多有趣的东西

  • 相关阅读:
    Pausing Coyote HTTP/1.1 on http-8080
    网站后台管理中生成首页失败
    Eclipse快捷键集结
    电子商务网站推广10大方法
    Eclipse使用
    注册表中更换桌面背景
    网站卡死,照惯例运行.bat批量处理文件进行重启不起作用
    同时处理html+js+jquery+css的插件安装(Spket&Aptana插件安装)
    JQuery的插件
    Eclipse插件
  • 原文地址:https://www.cnblogs.com/MonsterCui-Code/p/8834996.html
Copyright © 2011-2022 走看看