zoukankan      html  css  js  c++  java
  • (二)使用CXF开发WebService服务器端接口

    CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它。

    CXF主页:http://cxf.apache.org/

    简介:百度百科

    今天的话,主要是用CXF来开发下WebService服务器端接口,明天写下开发客户端接口;

    这里用Maven。

    首先建一个Maven的j2se项目;

    项目的jre用1.8,因为1.8有webservice的默认实现。不要用1.5 不然下面你用我的代码会有问题,用1.5的话,还需要另外加jar包,这里为了大家省事,要换成1.8;

    根据规范,我们先建一个接口类:HelloWorld

    package com.wishwzp.webservice;
    
    import javax.jws.WebService;
    
    @WebService
    public interface HelloWorld {
    
        public String say(String str);
    }

    再建一个具体的实现类:HelloWorldImpl

    package com.wishwzp.webservice.impl;
    
    import javax.jws.WebService;
    
    import com.wishwzp.webservice.HelloWorld;
    
    @WebService
    public class HelloWorldImpl implements HelloWorld{
    
        public String say(String str) {
            return "hello" + str;
        }
    
    }

    最后建一个发布服务的主类:Server

    package com.wishwzp.webservice;
    
    import javax.xml.ws.Endpoint;
    
    import com.wishwzp.webservice.impl.HelloWorldImpl;
     
    public class Server {
     
        public static void main(String[] args) {
            System.out.println("web service start");  
            HelloWorld implementor = new HelloWorldImpl();  
            String address = "http://192.168.0.110/helloWorld";  
            Endpoint.publish(address, implementor);  // JDK实现   暴露webservice接口
            System.out.println("web service started");  
        }
    }

    这里的Endpoint是Jdk自身实现的WebService。所以到这里我们不需要用到CXF的任何东西。

    这里的address,写上自己的本机IP

    我们运行下Server类:

    运行效果如下:

    我们在浏览器里访问:http://192.168.0.110/helloWorld?wsdl

    效果:

    说明已经成功调用了webservice接口;

    这里的wsdl 是 Web Services Description Language的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。WSDL是Web Service的描述语言,用于描述Web Service的服务,接口绑定等,为用户提供详细的接口说明书。

    请求后得到的是一个xml规范文档。是一套规范,后面会具体介绍,任何语言平台技术都可以解析。

    下面我们介绍使用CXF来实现webservice接口:

    我们先在pom.xml中加入:

    <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-core</artifactId>
            <version>3.1.5</version>
        </dependency>
         
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.1.5</version>
        </dependency>
         
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>3.1.5</version>
        </dependency>

    这里要额外加入jetty,作为webservice发布的服务器。jetty是一个内嵌的web服务器;

     

    我们把Server改下。换成CXF实现:

    package com.wishwzp.webservice;
    
    import javax.xml.ws.Endpoint;
    
    import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
    
    import com.wishwzp.webservice.impl.HelloWorldImpl;
     
    public class Server {
     
        public static void main(String[] args) {
            System.out.println("web service start");  
            HelloWorld implementor = new HelloWorldImpl();  
            String address = "http://192.168.0.110/helloWorld";  
            //Endpoint.publish(address, implementor);  // JDK实现   暴露webservice接口
            JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean();
            factoryBean.setAddress(address); // 设置暴露地址
            factoryBean.setServiceClass(HelloWorld.class); // 接口类
            factoryBean.setServiceBean(implementor); // 设置实现类
            factoryBean.create();      
            System.out.println("web service started");  
            System.out.println("web service started");  
        }
    }

    运行效果和刚才一样,这里就不再重复;

  • 相关阅读:
    Ubuntu 14.04 卸载通过源码安装的库
    Ubuntu 14.04 indigo 相关依赖
    Ubuntu 14.04 indigo 安装 cartographer 1.0.0
    Ubuntu 14.04 改变文件或者文件夹的拥有者
    安装cartographer遇到Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"问题
    Unrecognized syntax identifier "proto3". This parser only recognizes "proto2". ”问题解决方法
    查看所有用户组,用户名
    1卸载ROS
    Ubuntu14.04 软件安装卸载
    Ubuntu14.04系统显示器不自动休眠修改
  • 原文地址:https://www.cnblogs.com/wishwzp/p/9910544.html
Copyright © 2011-2022 走看看