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

1、准备工作

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

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

最新文章

  1. 增删改查--windows下mysql客户端--表的使用
  2. 【单页应用之通信机制】view之间应该如何通信
  3. windows server 2003(64位)上利用iis6部署32位应用
  4. python 3 学习笔记(二)
  5. 4、解决native库不兼容
  6. unity销毁层级物体及 NGUI 深度理解总结
  7. Android笔记:四大组件
  8. hdu3228Island Explorer
  9. Unity3D和OGRE资源管理机制
  10. 桂电在linux环境下使用出校器
  11. codeforces 617E. XOR and Favorite Number 莫队
  12. [LeetCode55]Jump Game
  13. SMON功能-SMON_SCN_TIME字典基表
  14. 在鼠标右键上加入使用notepad++编辑【转】
  15. Navicat for MySQL下载安装和破解教程
  16. swift 学习- 19 -- 可选链式调用
  17. PyTorch 1.0 发布,JIT、全新的分布式库、C++ 前端
  18. POJ2289 Jamie's Contact Groups(二分图多重匹配)
  19. Linux学习6-Linux常用命令(1)
  20. [ACM] POJ 3349 Snowflake Snow Snowflakes(哈希查找,链式解决冲突)

热门文章

  1. 关于esp8266的SDK开发串口打印mismatch map 3,spi_size_map 6 system_partition_table_regist fail解决办法
  2. Django结合Websocket进行WebSSH的实现
  3. Apache Flink 如何正确处理实时计算场景中的乱序数据
  4. moviepy音视频剪辑:使用fl_time进行诸如快播、慢播、倒序播放等时间特效处理的原理和可能遇到的坑
  5. PyQt(Python+Qt)学习随笔:QTreeView树形视图的allColumnsShowFocus属性
  6. HBase的基本使用(安装配置、启动关闭、hbash shell的基本操作、phoenix、实战)
  7. django学习——request.POST.get(‘key’) 、 request.GET.get('key', '')
  8. 第 5篇 Scrum 冲刺博客
  9. 题解-CF1401E Divide Square
  10. tornado 作业 简单首页 登录页 个人中心