四步完成WebService服务端与客户端的调用

内部系统之间数据传输使用RMI方式比较方便,但外部系统之间由于系统兼容性原因,使用WebService是较流行的方式。这两天特意整理了一下WebService发布、调用的方式,把实例贴出来。 
   
   1.服务端配置:使用CXF + Spring方式。 
   配置web.xml,添加cxfservler, 
   
  
Xml代码   收藏代码
  1. <servlet>  
  2.         <servlet-name>CXFServlet</servlet-name>  
  3.         <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>  
  4.         <load-on-startup>1</load-on-startup>  
  5.     </servlet>  
  6.     <servlet-mapping>  
  7.         <servlet-name>CXFServlet</servlet-name>  
  8.         <url-pattern>/*</url-pattern>  
  9.     </servlet-mapping>  
  10.      


原因是webservice服务是运行在web容器中的,接收外部的http请求。所以配置一个servler,这里由cxf进行包装。 

    2.编写具体发布服务逻辑,并使用Spring进行配置 
   
Java代码   收藏代码
  1. @WebService   
  2. public interface ISpeakService {   
  3.    public String speak(String userName, Date date);   
  4.   
  5. @WebService(endpointInterface = "com.sfexpress.ISpeakService")   
  6. public class SpeakServiceImpl implements ISpeakService {   
  7.   
  8.    public String speak(String userName, Date date){  
  9.        return "Hello " + userName + ", today is " + date.toString();   
  10.    }   
  11. }   
  12. }   

     
配置spring beans.xml文件,发布服务端的逻辑,并配置外接访问地址为:/SpeakService 
  
Xml代码   收藏代码
  1.     <import resource="classpath:META-INF/cxf/cxf.xml" />  
  2. <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />  
  3. <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />  
  4.   
  5. <jaxws:endpoint id="speakService"  
  6.     implementor="com.sfexpress.SpeakServiceImpl"   
  7.     address="/SpeakService" />  


3.导出服务端生成的wsdl文件,访问http://localhost:8180/SpeakService?wsdl,把网页内容保存成speak.wsdl文件。wsdl是接口描述文件,通过XML进行定义,客户端需要把wsdl文件提前解析为java文件,这样在客户端就可以像rmi方式一样调用。 
转换工具使用apache-cxf-2.6.16, 具体命令:wsdl2java -p com -d D:\data\sss d:\data\sss\speak.wsdl 取出生成的ISpeakService.java类。 

4.新建java工程并创建一个客户端调用主类。 
拷贝刚才生成的ISpeakService.java至客户端工程。 
主类中按下面方式调用即可。 

Java代码   收藏代码
  1. public static void main(String[] args) throws DatatypeConfigurationException {  
  2.   
  3.     // 创建WebService客户端代理工厂  
  4.     JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();  
  5.     // 注册WebService接口  
  6.     factory.setServiceClass(ISpeakService.class);  
  7.     // 设置WebService地址  
  8.     factory.setAddress("http://localhost:8180/SpeakService?wsdl");  
  9.       
  10.     XMLGregorianCalendar  date = DatatypeFactory.newInstance().newXMLGregorianCalendar();  
  11.     date.setYear(2014);  
  12.     date.setMonth(11);  
  13.     date.setDay(12);  
  14.       
  15.     ISpeakService greetingService = (ISpeakService) factory.create();  
  16.     System.out.println("message context is:"  
  17.     + greetingService.speak("beck", date));  
  18.   
  19. }  
  20. 本文由上海java培训机构推荐阅读,更多精彩请浏览上海it培训官网。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值