• 使用CXF开发简单的Web Service-HelloWorld(二)


    上篇博文我们介绍了Web Service的基本概念,了解它的基本概念之后,我们这篇博文介绍一个开源的WebService框架-Apache CXF,并实现一个HelloWorld实例。

    一、开始之前

    SOA目前已经成为了人人皆知的热点,SOA是面向服务的架构,SOA的重点在于服务的重用,即Service1+Service2+Service3,所有的组件都是“即插即用”的。SOA是由IBM提倡的架构,希望以“组装电脑”的方式开发软件。SOA涉及到两个重要的技术:

    1. 各种提供服务的组件(web service)
    2. 企业服务总线(Enterprise Service Bus ——> ESB )(后面的博文介绍)

    二、CXF介绍

    CXF号称是SOA框架,也是Apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。对于CXF的功能特性,以及支持标准,传输方式,不再过多的介绍,大家看一下网上的内容即可。

    CXF下载地址:

    下载地址

    安装CXF+配置:

    1. 下载CXF,将压缩包解压
    2. 找到bin目录,例如:D:apache-cxf-2.5.9in,将这个目录配置到电脑的环境变量的path下。
    3. 验证是否成功。 
      在命令界面dos下,输入wsdl2java,例如: 
      这里写图片描述

    可以看到有相应的信息输出,就是我们的命令缺少参数而已,表明可以执行这个命令,已经成功。

    三、开发Web Service

    1、开发准备

    1. jdk安装
    2. eclipse开发环境
    3. CXF安装+配置

    2、服务器端

    万事俱备只欠东风,我们先开发服务器端。

    1、目录: 
    这里写图片描述

    每个WebService组建需要2个部分:接口和实现类。

    2、服务器端的代码:

    接口:HelloWorld

    package com.tgb.ws;
    
    import javax.jws.WebService;
    
    @WebService
    public interface HelloWorld {
        String sayHi(String name);
    }

    实现类:

    package com.tgb.ws.impl;
    
    import java.util.Date;
    import javax.jws.WebService;
    import com.tgb.ws.HelloWorld;
    
    @WebService(endpointInterface="com.tgb.ws.HelloWorld",
    serviceName="HelloWorldWs")
    public class HelloWorldWs implements HelloWorld {
    
        @Override
        public String sayHi(String name) {
            return name + ".您好" + "现在时间是:" 
            + new Date();
        }
    }

    接口和实现我们都写好了,下面我们暴露我们的服务:

    package service;
    
    import javax.xml.ws.Endpoint;
    
    import com.tgb.ws.HelloWorld;
    import com.tgb.ws.impl.HelloWorldWs;
    
    public class ServerMain {
    
        public static void main(String[] args) {
    
            HelloWorld hw = new HelloWorldWs();
    
            //调用EndPoint的publish方法发布WebService
            //调用Endpoint的publish方法发布web service 第一个参数为ip地址 ,第二v参数就是服务的提供者  
            Endpoint.publish("http://192.168.3.3:8989/crazyit", hw);
    
            System.out.println("WebService调用成功了");
        }
    }

    运行main方法,我们就可以发现我们暴露的服务了: 
    这里写图片描述

    由上图我们已经成功的暴露服务,我们使用了WebService的注解,但是好像我们到现在还没有使用CXF, 为什么呢?

    因为WebService是Java的规范,CXF是WebService的实现。

    3、服务器端小结

    开发服务器端的步骤,总共分为三步: 
    (1)开发一个Web Service业务接口。 
    该接口要用@WebService修饰 
    (2)开发一个Web Service实现类 
    实现类也需要用@WebService修改 
    (3)使用EndPoint类的静态方法来发布WebService

    3、客户端

    1、目录 
    这里写图片描述

    2、使用CXF生成客户端代码 
    首先,新建java项目,在命令行窗口中,切换到此java项目src目录。使用CXF的命令,wsdl2java+服务暴露地址?wsdl 
    这里写图片描述

    [注]生成客户端代码时,服务器端一定要运行,否则会保持,如下图: 
    这里写图片描述

    3、客户端代码:

    package client;
    
    import com.tgb.ws.HelloWorld;
    import com.tgb.ws.impl.HelloWorldWs;
    
    public class ClientMain {
    
        public static void main(String[] args) {
            HelloWorldWs hw = new HelloWorldWs();
            HelloWorld helloWorld = hw.getHelloWorldWsPort();
            System.out.println(helloWorld.sayHi("HelloWorld"));
    
        }
    }

    运行客户端,如下图: 
    这里写图片描述

    好的,恭喜你,我们已经成功的调用了我们的服务。

    4、客户端小结:

    使用CXF开发Web Service客户端得步骤也分三步: 
    (1)调用CXF提供的wsdl2java工具 
    WSDL-Web Service Definition Language任何语言实现了Web Service,都需要提供、并暴露WSDL文档。 
    (2)找到wsdl2java所生成类中,一个继承了Service的类。 
    该类的实例可当成工厂使用。 
    (3)调用Service子类的实例的getxxxPort方法,返回webService的代理。

    总结:

    恭喜你,使用CXF开发Web Service的简单实例到此结束。

    源码下载

    下篇博文,我们深入的讲解WSDL文档。

  • 相关阅读:
    spring boot 与 spring cloud 版本映射
    Java锁
    并发编程(二)
    并发工具类和线程池
    并发编程
    Map双列集合(二)
    Map双列集合(一)
    单列集合List
    类加载
    JVM字节码与代码优化
  • 原文地址:https://www.cnblogs.com/pureEve/p/6547242.html
Copyright © 2020-2023  润新知