zoukankan      html  css  js  c++  java
  • 使用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文档。

  • 相关阅读:
    BestCoder17 1001.Chessboard(hdu 5100) 解题报告
    codeforces 485A.Factory 解题报告
    codeforces 485B Valuable Resources 解题报告
    BestCoder16 1002.Revenge of LIS II(hdu 5087) 解题报告
    codeforces 374A Inna and Pink Pony 解题报告
    codeforces 483B Friends and Presents 解题报告
    BestCoder15 1002.Instruction(hdu 5083) 解题报告
    codeforces 483C.Diverse Permutation 解题报告
    codeforces 483A. Counterexample 解题报告
    NSArray中地内存管理 理解
  • 原文地址:https://www.cnblogs.com/pureEve/p/6547242.html
Copyright © 2011-2022 走看看