随笔-30  评论-123  文章-0  trackbacks-0
摘要:
问过一些.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
下图展示了上述技术在工作环境中是如何使用的.
jw-0501-xfire.jpg
在这里,提供者是可以提供服务的应用组件, 申请者是需要使用服务的客户端程序. 很多其他技术也参与了这个交互过程,但是这里只显示了在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个传入参数
  1. String fromAccount
  2. String toAccount
  3. double amount
  4. 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应用的部署配置

posted on 2006-05-15 14:46 学二的猫 阅读(3232) 评论(3)  编辑  收藏 所属分类: Java禅机

评论:
# re: XFire:开发Web服务的简易之道(一)--XFire简介 2006-05-16 09:39 | Harryson
谢谢,楼主,:0)
以前总以为webservice是很负责的东东,现在看来中的很容易.  回复  更多评论
  
# re: XFire:开发Web服务的简易之道(一)--XFire简介 2006-05-16 10:16 | 学二的猫
@Harryson
怎么叫"很容易",那家活可是"相当容易"!  回复  更多评论
  
# re: XFire:开发Web服务的简易之道(一)--XFire简介 2006-06-19 13:39 | tooy
拜托,转载请做声明好不好。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: