开发基于Xfire的Webservice

本文介绍使用 XFire 框架构建 WebService 的两种客户端开发方式:一是基于提供的接口,二是通过 WSDL 动态创建客户端。后者更为灵活,适用于第三方服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天参考网上的文档学习了一下使用Xfire构建webservice,相比较 Axis 而言,真有点相见很晚的感觉,使用Xfire的确简单和方便不少,而且还能与spring集成使用,更难能可贵的是,Myeclipse官方网站还有关于使用Xfire的教程,地址如下:

 

http://www.myeclipseide.com/documentation/quickstarts/webservices/

 

可见Xfire的易用性是得到了公认的,具体的webservice开发上面的网址已经说的很清楚,这里不累述了,只提一下客户端的开发就行了。

 

使用XFire开发Web Service客户端主要有两种方式

 

一、服务提供者告诉你interface

  1. package test;
  2. import java.net.MalformedURLException;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.codehaus.xfire.XFireFactory;
  6. import org.codehaus.xfire.client.XFireProxyFactory;
  7. import org.codehaus.xfire.service.Service;
  8. import org.codehaus.xfire.service.binding.ObjectServiceFactory;
  9. public class WSClinet {
  10.     public static void main(String[] args) {
  11.         Service srvcModel = new ObjectServiceFactory()
  12.                 .create(IHelloService.class);
  13.         XFireProxyFactory factory = new XFireProxyFactory(XFireFactory
  14.                 .newInstance().getXFire());
  15.         String helloWorldURL = "http://localhost:8080/wwwroot/services/HelloService";
  16.         try {
  17.             IHelloService srvc = (IHelloService) factory.create(srvcModel,
  18.                     helloWorldURL);
  19.             System.out.println(srvc.sayHello("Robin"));
  20.         } catch (MalformedURLException e) {
  21.             e.printStackTrace();
  22.         }
  23.     }
  24. }

二、通过WSDL创建一个动态的客户端

  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. import org.codehaus.xfire.client.Client;
  4. public class WSClinet {
  5.     public static void main(String[] args) throws MalformedURLException,
  6.             Exception {
  7.         Client client = new Client(new URL(
  8.                 "http://www.webservicex.net/globalweather.asmx?WSDL"));
  9.         Object[] results = client
  10.                 .invoke("GetCitiesByCountry"new Object[] { "China" });
  11.         System.out.println(results[0]);
  12.     }
  13. }

这里需要知道webservice的操作方法以及输入的参数,如GetCitiesByCountry,这个怎么知道呢,打开WSDL文件,只看schema部分的代码就很容易找到服务名及其参数定义了。

 

这两种方法个人觉得动态的方式要符合实际的应用一些,毕竟很多第三方是不会告诉你接口类的,感觉Myeclipse利用Xfire生成WS客户端的工具也应该用的动态原理,而且还相当的方便,在main方法中就只关注operator name了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值