zoukankan      html  css  js  c++  java
  • WEBSERVICE之CXF框架开发webservice

    之前学习了使用jdk开发webservice服务,现在开始学习使用框架(cxf)开发webservice.

    1、准备工作

      A、使用cxf开发webservice服务,需要用到apache-cxf-3.0.10.jar的包,并需要将bin目录配置到环境变量中,如:d:CXFapache-cxf-3.0.10in

      B、我使用的是eclips4.6.2

      C、JDK要使用1.7以上版本

    2、新建工程

     2.1  New –》 Java Project  

     2.2 引入相关jar包

    3、写实现类

    接口类:

    package com.ws.usinterface;

    import javax.jws.WebService;

    @WebService
    public interface HelloWorldService {
    public String say();
    public String read(String name);
    }

    接口实现 类:

    package com.ws.usinterface;

    import javax.jws.WebService;
    /**
    * 实现类中也需要用@WebService注解成服务类,并且需要指明实现了那个接口及 服务名,这个服务名是在url中访问使用
    * @author Administrator
    *
    */
    @WebService(endpointInterface = "com.ws.usinterface.HelloWorldService",serviceName = "HelloWorld")
    public class HelloWorldServiceImpl implements HelloWorldService {


    @Override
    public String say() {
    System.out.println("Hello world");
    return "Hello world";

    }

    @Override
    public String read(String param) {
    System.out.println(param+" say hello world");
    return param+" say hello world";
    }

    }

    注:

    @WebService:这个注解之前已经讲了是用来将类注解为webservice服务的,这里再重复加强下记忆

    endpintInterface:表示该实现类实现的接口,写完整类名 
    serviceName     表示服务的名称,可以任意写

    4、发布工程 

    public class Cxfpublich {
    /**
    * cxf也是采用EndPoint。publich()方法来发布服务的
    * @param args
    */
    public static void main(String[] args) {

    HelloWorldService hw = new HelloWorldServiceImpl();
    Endpoint.publish("http://localhost:8089/HelloWorld",hw);

    System.out.println("Web Service发布成功!");
    }

    }

    5、 测试服务 
     服务地址+”?wsdl” http://localhost:8089/HelloWorldWS?wsdl

     打开链接后,显示相应的xml,则成功

    客户端

    1 新建一工程

    2 使用工具生成客户端代码

    在命令窗口定位到客户端项目的src目录下,通过工具wsdl2java 服务地址(**?wsdl)生成客户端代码 

    如下:

    wsdl2java  http://localhost:8089/HelloWorldWS?wsdl

    当然前提是,服务已经启动,wsdl文件能访问到

    3编写客户端调用代码,调用服务

    1. 调用服务工厂(一个继承了service的类)的get**Port方法

    public class ClientMain {
        public static void main(String[] args){
            //工厂
        HelloWorld factory = new HelloWorld();
        //得到服务代理
          HelloWorldService hw =factory.getHelloWorldServiceImplPort();

                  //调用服务方法
                 hw.say();
                 hw.read("test");

        }

    }

    总结,

    感觉和jdk发布webservcie没有什么区别,唯一的不同大概就是

    1、使用到了 endpointInterface 与serviceName

    而serviceName的引用,使得我们可以任意指定发布的服务名

    2、就是生成客户端使用的工具不一样。

    当然这是我个人的观点

    以下是我觉得对cxf介绍比较好的一篇文章

     http://blog.csdn.net/u010924834/article/details/51661131

  • 相关阅读:
    splay复杂度的证明
    splay的写法
    洛谷 P3722 [AH2017/HNOI2017]影魔
    洛谷 P4770 [NOI2018]你的名字
    清北考前刷题day3下午好
    P3043 [USACO12JAN]牛联盟Bovine Alliance(并查集)
    bzoj3252攻略(线段树+dfs序)
    清北考前刷题day2早安
    清北考前刷题day2下午好
    清北考前刷题day1下午好
  • 原文地址:https://www.cnblogs.com/w-essay/p/7596694.html
Copyright © 2011-2022 走看看