WEBSERVICE之CXF框架开发webservice
之前学习了使用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编写客户端调用代码,调用服务
- 
调用服务工厂(一个继承了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
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号