CXF系列一:创建一个简单的web service

来源:互联网 发布:成都学软件开发 编辑:程序博客网 时间:2024/06/05 11:44


CXF是web service的一种实现方式,关于两者的具体的概念,本文不做具体阐述,详情请参考网上资料。本文接下来将会新建两个2个简单的工程,一个是服务端,一个是客户端,服务端提供接口,客户端调用接口,完成一个简单的交互。

1:工程截图

2:在服务端工程cxf的pom.xml下

[plain] view plain copy
  1. <dependencies>  
  2.     <dependency>   
  3.         <groupId>org.apache.cxf</groupId>  
  4.         <artifactId>cxf-rt-frontend-jaxws</artifactId>  
  5.         <version>3.1.7</version>  
  6.     </dependency>  
  7.       
  8.     <dependency>  
  9.         <groupId>org.apache.cxf</groupId>  
  10.         <artifactId>cxf-core</artifactId>   
  11.         <version>3.1.7</version>  
  12.     </dependency>  
  13.       
  14.     <dependency>  
  15.         <groupId>org.apache.cxf</groupId>  
  16.         <artifactId>cxf-rt-transports-http-jetty</artifactId>   
  17.         <version>3.1.7</version>  
  18.     </dependency>  
  19.   </dependencies>  

3:创建一个HelloWorld接口

[java] view plain copy
  1. package com.qqw.webservice;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. @WebService  
  6. public interface HelloWorld {  
  7.   
  8.     public String say(String str);  
  9.   
  10. }  

4:实现HelloWorld接口

[java] view plain copy
  1. @WebService  
  2. public class HelloWorldImpl implements HelloWorld{  
  3.   
  4.     @Override  
  5.     public String say(String str) {  
  6.           
  7.         return "hello:"+str;  
  8.     }  
  9. }  

5:提供一个main方法暴露接口

[java] view plain copy
  1. package com.qqw.webserviceImpl;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4. import org.apache.cxf.jaxws.JaxWsServerFactoryBean;  
  5.   
  6. import com.qqw.webservice.HelloWorld;  
  7.   
  8. public class Server {  
  9.   
  10.     /** 
  11.      * @param args 
  12.      */  
  13.     public static void main(String[] args) {  
  14.           
  15.         System.out.println("ws is start");  
  16.         HelloWorld hwHelloWorld=new HelloWorldImpl();  
  17.         String address="http://172.16.10.123/helloWorld";//ip地址可以是本机的ip地址或服务器的地址,后面的ws的名称可以随意  
  18.         //Endpoint.publish(address, hwHelloWorld);jdk提供的暴露接口的方法  
  19.         JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean();  
  20.         factoryBean.setAddress(address);  
  21.         factoryBean.setServiceClass(HelloWorld.class);  
  22.         factoryBean.setServiceBean(hwHelloWorld);  
  23.         factoryBean.create();  
  24.         System.out.println("ws is started");  
  25.   
  26.     }  
  27.   
  28. }  

6:点击运行就可以发布,然后去浏览器输入http://172.16.10.123/helloWorld?wsdl


7:客户端的代码不用自己写,可以去apache cxf官网下载,可以自动生成调用的代码,地址:http://cxf.apache.org/

找个文件夹解压,比如在E盘,然后配置环境变量,在path里面加上;E:\apache-cxf-3.1.9\bin,点击确认就行。cmd执行命令:


因为我的客户端工程在F盘下,我要把自动生成的代码放到src/main/java文件夹下面,然后再调用wsdl2java命令就行。


8.在客户端main方法调用

[java] view plain copy
  1. HelloWorldService hService=new HelloWorldService();  
  2. HelloWorld helloWorld = hService.getHelloWorldPort();  
  3. System.out.println(helloWorld.say("小菜鸟"));  

9:后台日志


至此,简单的CXF创建应用介绍完毕。


原创粉丝点击