cxf实现WebService的发布和调用简单实例。
1、准备工作:下载cxf http://cxf.apache.org/download.html
lib文件下的WHICH_JARS文件列出了各用途下所需的jar包。
bin目录下存放运行文件。
2、服务端:先新建接口和相关的实现类。发布的服务是接口的方式。
代码如下
1 package com.liujf; 2 3 import javax.jws.WebParam; 4 import javax.jws.WebService; 5 6 @WebService 7 public interface IWebService 8 { 9 String sayHi(@WebParam(name = "text") String text); 10 }
1 package com.liujf; 2 3 import javax.jws.WebService; 4 5 @WebService(endpointInterface = "com.liujf.IWebService", serviceName = "helloTest") 6 public class WebServiceImpl implements IWebService 7 { 8 9 @Override 10 public String sayHi(String text) 11 { 12 // TODO Auto-generated method stub 13 return "Welcome " + text; 14 } 15 16 }
然后建立发布的方法:
1 package com.liujf; 2 3 import javax.xml.ws.Endpoint; 4 5 public class ServicePublish 6 { 7 public static void main(String[] args) 8 { 9 System.out.println("web service start"); 10 WebServiceImpl implementor = new WebServiceImpl(); 11 String address = "http://192.168.16.101:8080/helloTest"; 12 Endpoint.publish(address, implementor); 13 System.out.println("web service started"); 14 } 15 }
运行发布代码的main方法,Web Serice服务即发布成功。
浏览器输入http://192.168.16.101:8080/helloTest?wsdl 可以打开wsdl文件。
3、客户端:首先需要把服务相关的接口类导入到本地。
调用bin目录下的wsdl2java.bat文件:\bin>wsdl2java http://192.168.16.101:8080/helloTest?wsdl
生成对应的java类,拷贝到客户端工程目录下。然后可编写调用服务代码进行测试。
1 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; 2 3 import com.liujf.IWebService; 4 5 public class WebServiceTest 6 { 7 public static void main(String[] args) 8 { 9 // 创建WebService客户端代理工厂 10 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); 11 // 注册WebService接口 12 factory.setServiceClass(IWebService.class); 13 // 设置WebService地址 14 factory.setAddress("http://192.168.16.101:8080/helloTest"); 15 IWebService webService = (IWebService)factory.create(); 16 System.out.println("invoke webservice..."); 17 System.out.println("message context is:" + webService.sayHi("LJF")); 18 } 19 }
控制台打印结果如下:
1 invoke webservice... 2 message context is:Welcome LJF
发布和调用过程完成。