现在的位置: 首页 > 综合 > 正文

XFire:开发Web服务的简易之道(三)–开发客户端程序

2014年03月24日 ⁄ 综合 ⁄ 共 2583字 ⁄ 字号 评论关闭
摘要:在《XFire:开发Web服务的简易之道(二)》中最后提到过:要想检验Web服务是否有效,需要一个客户端程序实际调用一下这个Web服务。本章我们就来创建这样一个用于检验的客户端程序,验证一下我们前面的工作是不是真的有效。最后总结一下用XFire开发Web服务的步骤。

创建客户端程序
我们可以使用很多方法,任何SOAP工具来创建客户端程序,例如.Net或Apache Axis。我的这个例子中我是用一个名叫WsClient.java的Servlet中的动态代理。为了减少编码的代价,我将所有屏幕构建元素都放到doGet()方法中。对Web服务服务的实际调用在callWebService()方法中。代码很简单:

/* Call the Web service
    *
    
*/

    
public String callWebService(
        String fromAccount, String toAccount, 
double amount, String currency) 
        
throws MalformedURLException, Exception {
        
        
//Create a metadata of the service      
        Service serviceModel = new ObjectServiceFactory().create(IBankingService.class);        
        log.debug(
"callSoapServiceLocal(): got service model." );
   
        
//Create a proxy for the deployed service
        XFire xfire = XFireFactory.newInstance().getXFire();
        XFireProxyFactory factory 
= new XFireProxyFactory(xfire);      
    
        String serviceUrl 
= "http://localhost:8080/websvc/services/Banking";
        
        IBankingService client 
= null;
        
try {
            client 
= (IBankingService) factory.create(serviceModel, serviceUrl);
        }
 catch (MalformedURLException e) {
            log.error(
"WsClient.callWebService(): EXCEPTION: " + e.toString());
        }
    
               
        
//Invoke the service
        String serviceResponse = "";
        
try 
            serviceResponse 
= client.transferFunds(fromAccount, toAccount, amount, currency);
       }
 catch (Exception e){
            log.error(
"WsClient.callWebService(): EXCEPTION: " + e.toString());                 
            serviceResponse 
= e.toString();
        }
        
        log.debug(
"WsClient.callWebService(): status=" + serviceResponse);              

        
//Return the response
        return serviceResponse;
    }
   

这段代码做了些什么?让我解释一下:首先我们创建了一个服务模型,里面包含了对服务的描述,换句话说,我们创建了服务的元数据。我们是用XFire的ObjectServiceFactory通过接口IBankingService.class创建了这个服务模型。

下一步就是获取XFire的代理对象。这一步中没有任何应用细节。通过proxyFactory,使用服务模型和服务终点URL(用于获得WSDL),我们获得了服务的本地代理。

这个代理就是实际的客户端。现在我们可以调用transferFunds()方法获得我们想要的Web服务了。

一旦这个例子部署成功并启动,就可以用下面的Servlet URL检验:
http://localhost:8080/websvc/ws
Servlet使用默认的参数访问Web服务并显示接收到的响应。你应该能看到下面两行信息
Response Received
COMPLETED: CDN$ 500.00 was successfully transferred from A/C# 11111-01234 to A/C# 99999-05678
现在你可以确信Web服务真的起来了并且工作正常。

你可以尝试传入不同的数据。你可以输入类似于下面的URL
http://localhost:8080/websvc/ws?from=11-2345&to=77-9876&amt=250.00&cur=EUR.

Web服务开发的基本步骤
下面列出了使用XFire开发Web服务的基本步骤:
1、检验Java类的方法和构造函数时公共的;
2、将XFire Servlet相关的入口添加到web.xml中;
3、创建services.xml并把它放到WEB-INF/classes/META-INF/xfire目录下;
4、将Xfire和其他第三方库添加到你的Web应用的WEB-INF/lib 目录下。
OK,这就是全部要做,就是这么简单。
 

抱歉!评论已关闭.