• WebService (什么是WebService ,有哪些优点? WebService由什么组成?分别对应的含义?)


    1. 关于WebService

    WebService简介

    (1)WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,

        可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。

    (2)WebService实现不同语言间的调用,是依托于一个标准,webservice是需要遵守WSDL(web服务定义语言)/SOAP(简单请求协议)规范的。

    (3)WebService=WSDL+SOAP+UDDI(webservice的注册),Soap是由Soap的part和0个或多个附件组成,一般只有part,在part中有Envelope和Body。

    (4)Web Service是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。

    WebService的优点

    (1) 可以让异构的程序相互访问(跨平台)。

    (2) 松耦合。

    (3) 基于标准协议(通用语言,允许其他程序访问)。

    WebService的基本原理

    (1) Service Provider采用WSDL描述服务。

    (2) Service Provider 采用UDDI将服务的描述文件发布到UDDI服务器(Register server)。

    (3)Service Requestor在UDDI服务器上查询并 获取WSDL文件。

    (4)Service requestor将请求绑定到SOAP,并访问相应的服务。

    ------------------------------

    WSDL

     : ( Web services Definition Language )  Web服务定义语言; 

    -------------------------------

    SOAP : ( Simple Object Access Protocol )  简单对象访问协议;

        是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。

        SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。

        它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。

    ------------------------------

    UDDI : ( Universal Description, Discovery and Integration ),通用描述、发现与集成服务。

    UDDI 是一种目录服务,企业可以使用它对 Web services 进行注册和搜索。

     

    --案例-------------------------------------------------------------------------------------------------------------------------

    服务器端:

    1. 创建接口

     1 package com.seecen.service;
     2  
     3 import javax.jws.WebParam;
     4 import javax.jws.WebService;
     5  
     6 @WebService
     7 public interface IWebService {
     8  
     9     String sayHi(@WebParam(name="text")String text,@WebParam(name="age")int age);   // 参数的名字叫text
    10  
    11 }

      2.  实现接口

     1 package com.seecen.service.impl;
     2  
     3 import javax.jws.WebService;
     4  
     5 import com.seecen.service.IWebService;
     6  
     7 @WebService(endpointInterface ="com.seecen.service.IWebService",serviceName="testService")
     8 public class WebServiceImpl implements IWebService{
     9  
    10     public String sayHi(String text, int age) {
    11         return "思成" + text + age;
    12     }
    13  
    14 }

     

    ——————————————————————————————————————————————————————————————————————————————

     3. 虚拟测试效果(只是方便测试效果)

     1 package main;
     2  
     3  
     4 import javax.xml.ws.Endpoint;
     5  
     6 import com.seecen.service.IWebService;
     7 import com.seecen.service.impl.WebServiceImpl;
     8  
     9  
    10 public class TestService {
    11  
    12     public static void main(String[] args) {
    13         System.out.println("Web Service start");
    14         IWebService webService = new WebServiceImpl();
    15         String address = "http://192.168.1.137:8080/web";
    16         Endpoint.publish(address,webService);               // 发布服务地址和接口
    17         System.out.println("Web Service started");
    18     }
    19  
    20 }

    ——————————————————————————————————————————————————————————————————————————————

    客户端:

    找到 apache-cxf-3.0.1 存放的路径,找到其下的 bin

    (在 cmd ---- F:----cd apache-cxf-3.0.1---cd bin (提前将com文件删掉)---wsdl2java -frontend jaxws21 http://192.168.1.137:8080/web?wsdl )

     1 public class Test {
     2  
     3     /**
     4      * @param args
     5      */
     6     public static void main(String[] args) {
     7  
     8         JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();    //通过JaxWsProxyFactoryBean动态生成客户端代理
     9         svr.setServiceClass(IWebService.class);                     //传入服务接口
    10         svr.setAddress("http://192.168.1.137:8080/web");            //发布服务的地址
    11         IWebService hw = (IWebService)svr.create();                 //然后调用create()方法创建动态代理
    12  
    13         System.out.println(hw.sayHi("翠花", 18));
    14  
    15     }
  • 相关阅读:
    Hdu 5073 Galaxy 精度问题
    HDU 4435 charge-station (并查集)
    HDU-4689 Derangement
    HDU 1011 Starship Troopers
    python 冒泡、快速、归并排序
    Django 上下文管理器的应用
    Django ajax小例
    Django 上传文件
    Django 登录验证码
    Django 模型中的CRUD
  • 原文地址:https://www.cnblogs.com/cfb513142804/p/4214637.html
Copyright © 2020-2023  润新知