• CXF webservice完整例子


    Web Service技术应用广泛,可实现不同平台的数据交换,现做了一个CXF webservice小例子,供webservice初学者参考.

    1.环境搭建

    1.1  下载 Apache CXF  可以去官方下载 http://cxf.apache.org/ 。也可点击http://pan.baidu.com/s/1jIPyOYU 我分享的云盘下载(apache-cxf-2.4.2).  解压文件

    1.2  配置Apache CXF环境变量: 创建一个CXF_HOEM变量,值为CXF框架所在根目录

      

       在path中添加CXF_HOEM变量

      

    1.3  创建java项目   引入 D:workapache-cxf-2.4.2lib 目录下的jar包

    2.代码编写

    2.1  创建IHelloService.java 接口

    package com.service;
    
    import javax.jws.WebParam;
    import javax.jws.WebService;
    
    @WebService
    public interface IHelloService {
        public String sayHello(@WebParam(name = "text") String text);
    
        public User getUser(String id);
    }
    View Code

    2.2  创建HelloServiceImpl.java实现 IHelloService 接口

    package com.service;
    
    import java.util.Date;
    
    import javax.jws.WebService;
    
    @WebService(endpointInterface = "com.service.IHelloService", serviceName = "HelloWorld")
    public class HelloServiceImpl implements IHelloService {
    
        @Override
        public String sayHello(String text) {
            return "Hello x " + text;
        }
    
        @Override
        public User getUser(String id) {
            User u = new User();
            u.setId(id);
            u.setAge(10);
            u.setName("小明");
            u.setBirthday(new Date(new Date().getTime() - 10 * 12 * 30 * 24 * 3600));
            return u;
        }
    
    }
    View Code

    2.3  编写 webServiceApp.java类来暴露 web服务

    package com.service;
    
    import javax.xml.ws.Endpoint;
    
    public class WebServiceApp {
        public static void main(String[] args) {
            System.out.println("web service start");
            HelloServiceImpl implementor = new HelloServiceImpl();
            String address = "http://localhost:8080/HelloService";
            Endpoint.publish(address, implementor);
            System.out.println("web service started");
        }
    }
    View Code

    2.4  run webServiceApp.java 类来启动服务。 访问 http://localhost:8080/HelloService?wsdl 查看是否成功

       

    2.5 编写客户端访问服务
    ======== 方法1:

    创建客户端的代理,生成factory对象,用于调用服务端的方法

    package com.service;
    
    import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
    
    public class HelloServiceClient {
        public static void main(String[] args) {
            JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
            svr.setServiceClass(IHelloService.class);
            svr.setAddress("http://localhost:8080/HelloService");
            IHelloService hw = (IHelloService) svr.create();
    
            System.out.println(hw.sayHello("你好"));
    
            User u = hw.getUser("1");
            System.out.println(u.getName());
        }
    }

    ======== 方法2:
    通过命令自动生成客户端文件

     法一.   1.cmd 进入doc窗口,

                2.用  wsimport -s D: -p com.client http://localhost:8080/HelloWorld?wsdl (不用安装apache-cxf客户端)命令生成

     法二.
     1.   cmd 进入doc窗口, 进入apache-cxf-2.4.2in路径
     2.   运行 wsdl2java -frontend jaxws21 -p com.client -d D: -client -autoNameResolution http://localhost:8080/HelloWorld?wsdl    会在D盘生成 comclient文件夹,里面有生成号的客户端文件。将文件拷贝到项目中

      

    3.  调用接口

    package com.main;
    
    import com.client.HelloWorld;
    import com.client.IHelloService;
    
    public class ClientMain {
    
        public static void main(String[] args) {
            HelloWorld factory = new HelloWorld();
            IHelloService hw = factory.getHelloServiceImplPort();
            System.out.println(hw.sayHello("sss"));
    
            System.out.println(hw.getUser("11").getName());
        }
    }

    下面链接可下载上述源码

    http://pan.baidu.com/s/1kUZVZHt  希望能帮到你

    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    vector容器
    CSS3文字与字体 text-overflow 与 word-wrap
    div 居中
    C# 邮件发送
    SD详解-销售过程
    js 常用
    finereport报表--动态格间运算 二
    finereport报表--动态格间运算 一
    CSS 渐变色
    CSS3 box-shadow 属性 紧跟在 -webkit-, -ms- 或 -moz-
  • 原文地址:https://www.cnblogs.com/lovedaodao/p/6946374.html
Copyright © 2020-2023  润新知