XFire:开发Web服务的简易之道(一)--XFire简介

来源:百度文库 编辑:神马文学网 时间:2024/04/28 05:23:55
XFire:开发Web服务的简易之道(一)--XFire简介
摘要:
问过一些.NET程序员:开发Web服务有多艰苦? 他们被我的问题逗乐了! 他们回答说:用时小于1分钟.
同样的问题,我又问了一个Java程序员, 得到的回答与先前.Net程序员的大相径庭.
Web服务这个概念引入Java已经有5年了.然而Web服务还是被认为是一个较新的技术,这是Web服务在Java上难于实现的主要原因.
如今,随着新一代Web服务引擎--XFire的发布, 一切发生了翻天覆地的变化.
使用XFire,你不需要写一句代码就可以将Java类方法转换成Web服务.
阅读本文,你将领略到XFire是如何将开发Web服务变得无比轻松,简易的.
Web服务
Web服务允许我们建立应用组件放置于网络上的分布式系统. 不管这些应用组件是怎么写的,使用什么语言写的,要运行在什么操作系统上, 我们都能以统一的方式访问这些组件.如果一个Web服务有效并且设计实现了互用性问题,那么无论你的应用是用什么语言,在什么平台上开发的,都可以使用这些服务.
为了实现平台无关,实现独立的访问Web服务, 业界制定了一系列技术标准,下面是一些最重要的技术:
* XML
* SOAP
* WSDL
下图展示了上述技术在工作环境中是如何使用的.

在这里,提供者是可以提供服务的应用组件, 申请者是需要使用服务的客户端程序. 很多其他技术也参与了这个交互过程,但是这里只显示了在Web服务环境中必不可少的核心组件.
XFire
XFire是一个免费的,开源的SOAP框架. 它不仅允许你轻松简易地实现这么一个环境.而且还提供了很多先进的特性.不错,你没有看错,"轻松简易". 本文中你将会看到用XFire构建Web服务是多么的简单.如果你的Web应用有一个Java类, 现在你希望这个类编程Web服务,用XFire完成这一工作你不必写一句代码.仅需操作一下部署描述器,你就会得到一个Web服务. 是的, 就是这么简单.让我们来看个例子.
一个简单的Java类
我的这个例子是一个位于Apache Tomcat 5.5.7主机运行在J2SE 1.4.2_07下的银行应用. 我假设你已经知道如何使用Java编写web应用并且已经配置了Tomcat服务器.我们的这个应用很简单,  只完成一项工作, 就是将钱从一个帐户转到另一个帐户.BankingService类中的transferFunds()为我们完成这一工作. 他需要4个传入参数
String fromAccount String toAccount double amount String currency
下面是代码:
package com.mybank.xfire.example;

import java.text.NumberFormat;
import java.text.DecimalFormat;

/** *//** XFire WebServices sample implementation class.
*/
public class BankingService implements IBankingService {

    //Default constructor.
    public BankingService(){
    }

    /** *//** Transfers fund from one account to another.
    */
    public String transferFunds(
        String fromAccount, String toAccount, double amount, String currency){

        String statusMessage = "";

        //Call business objects and other components to get the job done.
        //Then create a status message and return.
        try {
            NumberFormat formatter = new DecimalFormat("###,###,###,###.00");
            statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+
            " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;
        } catch (Exception e){
            statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();
        }
        return statusMessage;
    }

}
在上面的代码中你看到奇怪的代码了吗? 大概没有吧. 除了那个公共的默认构造函数.这个构造函数是必不可少的,因为XFire要用他来实例这个类.
因为使用接口来完成是很好的实践,因此我们的类也实现了一个名叫IBankingService的接口.代码很简单:
package com.mybank.xfire.example;

public interface IBankingService {

    public String transferFunds(
        String fromAccount, String toAccount, double amount, String currency);

}

实际开发中,这个方法可能包含所有复杂的调用,请求和处理操作,但是我们的例子将其最小化以便我们能将精力集中到我们的目标上:将这个方法转换成Web服务.
你可以看到,我们的BankingService只不过是一个普通的Java类,没有任何代码说明它是否在Web服务中使用.这就对了!我们不需要写任何代码,所有工作都交给部署描述去处理.
后面我将介绍如何编写部署描述。
XFire:开发Web服务的简易之道(二)--Web应用的部署配置