zoukankan      html  css  js  c++  java
  • Spring框架——WebService

    Spring集成WebService

    WebService介绍

    WebService概念

    WebService是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。
    Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。

    WebService是一种跨编程语言跨操作系统平台的远程调用技术

    WebService技术

    1. 服务提供者通过WSDL在服务目录UDDI里进行注册发布,
    2. 服务请求者通过WSDL在服务目录UDDI里进行查找想要的服务,
    3. 再找到相应的服务后,服务请求者通过HTTP/SOAP与服务提供者进行服务调用。

    技术概念

    XML+XSD

    • XML(扩展的可标记语言)是WebService平台中表示数据的格式
    • 优点在于它既是平台无关的,又是厂商无关
    • XML Schema(XSD)定义了一套标准的数据类型

    SOAP(简单对象访问协议)

    1. WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特 定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议
    2. SOAP协议 = HTTP协议 + XML数据格式

    WSDL(Web Services Description Language)

    • 基于XML的
    • 用于描述WebService以及如何访问WebService的

    UDDI(Universal Description Discovery and Integration )

    • 通用描述、发现与集成的缩写
    • 基于XML语言的跨平台的的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务

    SOA 面向服务架构

    使用WebService提供的功能,基于服务的架构。

    微服务

    由SOA发展的微小型服务,例如SpringCloud

    OOP 面向对象编程

    OOD 面向对象设计

    SaaS 软件即服务

    PaaS 平台即服务

    WebService实现

    Java原生

    不是所有的Java类都可以成为标准的WebService

    标准:

    • 必须是public类
    • 不能是final的或者abstract
    • 必须有一个公共的默认构造函数
    • 类中绝对不能有重写的finalize()方法
      • Java技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作

    @WebService

    • name:服务的名字
    • targetNamespace :目标的命名空间,网址、域名
    • serviceName:对外公布的名字

    @WebMethod

    • operationName :对外方法名
    • action :服务器真正的方法名
    • exclude :

    @WebResult

    • name :

    @WebParam

    • name:
    @WebService(name = "Example", targetNamespace = "http://www.jsoso.com/wstest", serviceName = "WebServiceExample")
    public class WebServiceExample {
    
    	@WebMethod(operationName = "toSayHello", action = "sayHello", exclude = false)
    	@WebResult(name = "returnWord")
    	public String sayHello(@WebParam(name = "userName") String userName) {
    		return "Hello" + userName;
    	}
    }
    
    

    发布

    1. 声明初始化WebService
    2. 发布WebService
    public class StartService {
    	public static void main(String[] args) {
    		WebServiceExample service = new WebServiceExample();
     		/*
     		* 发布Web Service到http://localhost:8080/hello地址
     		*/
    		Endpoint.publish("http://localhost:8080/hello",service);
    		System.out.println("启动 http://localhost:8080/hello");
    	}
    }
    
    

    WSDL的全文

    输入网址

    http://localhost:8080/hello?wsdl
    

    访问方式

    服务端的WebService和客户端的WebService不一样。
    客户端的WebService是通过WSDL自动生成的。
    客户端调用自己的WebService等价于调用远端服务器WebService

    public class RunClient {
    	public static void main(String[] args) {
     		//初始化服务框架类  
           		WebServiceExample service = new WebServiceExample();  
           		//或者本地服务接口的实例  
          		Example server = (Example) service.getExamplePort();  
    		String sayHello = server.toSayHello("阿土");
          		System.out.println("输入toSayHello的返回值—"+sayHello);
    	}
    }
    
    

    Spring集成CXF

    Apache CXF

    一个正式的Apache顶级项目,是一个开源的,容易使用的Web服务框架

    • CXF框架是一种基于Servlet技术SOA应用开发框架
    • 高性能,扩展简单且容易使用,支持多种标准
    • 与Spring天然无缝集成

    CXF与Spring整合实现WebService服务器端

    1. 创建Dynamic Web project,引入CXF的jar包
    2. 编写即将发布为WebService的接口以及实现类
    3. web.xml中配置CXF,使其生效
    4. web.xml中配置Spring
    5. 创建Spring的bean配置文件applicationContext.xml
    6. 运行项目,检验结果检验成果

    配置web.xml

    配置CXF
    配置SpringMVC

    配置applicationContext.xml

    编写WebService类

    CXF动态调用WebService

  • 相关阅读:
    centos7安装nginx和php7启动脚本
    centos7 安装nginx遇到的坑
    php7.2 编译遇到的坑
    yum源更新
    redis
    nginx日志分割
    Docker部署LNMP完整教程
    浅谈JavaScript词法分析步骤
    PHP面向对象中的重要知识点(一)
    Mysql精华版(命令大全)
  • 原文地址:https://www.cnblogs.com/occlive/p/13583053.html
Copyright © 2011-2022 走看看