zoukankan      html  css  js  c++  java
  • Apache CXF 之HelloWorld

    Apache CXF 介绍

    Apache CXF = Celtix + XFire,Apache CXF 的前身叫 Apache CeltiXfire,现在已经正式更名为 Apache CXF 了,以下简称为 CXF。CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。目前它仍只是 Apache 的一个孵化项目。

    Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在多种传输协议上运行,比如:HTTP、JMS 或者 JBI,CXF 大大简化了 Services 的创建,同时它继承了 XFire 传统,一样可以天然地和 Spring 进行无缝集成。

    CXF 包含了大量的功能特性,但是主要集中在以下几个方面:

    1. 支持 Web Services 标准:CXF 支持多种 Web Services 标准,包含 SOAP、Basic Profile、WS-Addressing、WS-Policy、WS-ReliableMessaging 和 WS-Security。

    2. Frontends:CXF 支持多种“Frontend”编程模型,CXF 实现了 JAX-WS API (遵循 JAX-WS 2.0 TCK 版本),它也包含一个“simple frontend”允许客户端和 EndPoint 的创建,而不需要 Annotation 注解。CXF 既支持 WSDL 优先开发,也支持从 Java 的代码优先开发模式。

    3. 支持二进制和遗留协议:CXF 的设计是一种可插拨的架构,既可以支持 XML ,也可以支持非 XML 的类型绑定,比如:JSON 和 CORBA。

    CXF 之HelloWorld

    本次使用的使用的CXF版本是3.0.4,可以访问Apache站点下载Apache CXF安装包。

    CXF 服务端程序:

    1) 在Eclipse IDE中创建一个新的Java项目,本次命名为hello_cxf_server。
    2) 在项目中添加CXF安装包中lib下的依赖包。
    3) 编写服务接口

    package com.cxf.services;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    @WebService
    public interface SayHello {
        public String sayHello(@WebParam(name="name") String name);
    }

    @WebService和@WebParam 注释是必须的。@WebService注释说明这是一个Web Services。@WebParam注释说明这个参数的名称。因为Java接口不存储类文件的参数名称。如果省略掉参数名称,系统将被命名为arg0。

    4) 编写服务实现类

    package com.cxf.services.impl;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import com.cxf.services.SayHello;
    
    @WebService(endpointInterface="com.cxf.services.SayHello",
        serviceName="SayHelloImpl")
    public class SayHelloImpl implements SayHello{
    
        @Override
        public String sayHello(@WebParam(name="name") String name) {
            return "Hello " + name;
        }
    
    }

    5) 发布服务

    package com.cxf.server;
    
    import javax.xml.ws.Endpoint;
    import com.cxf.services.SayHello;
    import com.cxf.services.impl.SayHelloImpl;
    
    public class ServerMain {
    
        public ServerMain(){
            System.out.println("Starting Server");
    
            SayHello sayHello = new SayHelloImpl();
    
            String address = "http://localhost:9000/RickyService";
    
            Endpoint.publish(address, sayHello);
        }
    
        public static void main(String[] args) throws InterruptedException {
            new ServerMain();
            System.out.println("Server ready......");
        }
    }

    6) 查看WSDL文档
    在浏览器中输入http://localhost:9000/RickyService?wsdl
    这里写图片描述

    CXF 客户端程序:

    1) 在Eclipse IDE中创建一个新的Java项目,本次命名为hello_cxf_client。
    2) 在项目目录下使用CXF提供的wsdl2java.bat,实现WSDL文档生成Java代码
    启动CXF 服务,在客户端程序目录下使用wsdl2java http://localhost:9000/RickyService?wsdl命令
    生成对应得Java代码

    必须在CXF服务启动后才能执行wsdl2java命令成功
    3) 访问和调用服务

    package com.cxf.client;
    
    import com.cxf.services.SayHello;
    import com.cxf.services.impl.SayHelloImpl;
    
    public class ClientMain {
        public ClientMain(){}
    
        public static void main(String[] args) {
            SayHelloImpl factory = new SayHelloImpl();
            SayHello sayHello = factory.getSayHelloImplPort();
    
            System.out.println(sayHello.sayHello("Rickesy"));
        }
    }

    4) 查看WSDL文档
    在浏览器中输入http://localhost:9000/RickyService?wsdl=SayHello.wsdl
    这里写图片描述

    分别启动服务端和客户端,可在客户端控制台看到 Hello Rickesy 结果输出

    CXF 服务单和客户端目录结构:
    这里写图片描述

  • 相关阅读:
    华为手机wifi调试adb,断开数据线offlin
    appium 识别抖音视频已经播放完成
    对于学习新知识的一点自我反思
    部分软件激活
    AndroidStudio 创建简单的app
    App 逆向思路
    链家
    pyqt5 截屏
    3.无重复字符的最长子串
    1.两数之和
  • 原文地址:https://www.cnblogs.com/clongxiang/p/4321545.html
Copyright © 2011-2022 走看看