使用myeclipse快速建立webservice

使用myeclipse快速建立webservice  

打开MyEclipse新建一个WebService Project,为你的项目命名,我选择了Java EE5.0,项目在你的WorkSpace目录下。下一步:看到了这个界面

使用myeclipse快速建立webservice - cui_zhouyang - 积累==成功

在这里Eclipse为你创建了webService的配置文件services.xml(主意文件名是有“s”的),并进行了Xfire的 Servlet基本配置告诉项目你使用了Xfire改信息将体现在项目的web.xml文件中。继续下一步,加载Xfire相关的jar包,你看到了

使用myeclipse快速建立webservice - cui_zhouyang - 积累==成功

在这个项目里我勾选了Xfire1.2 Core Libraries;HTTP Client Libraries;XML Beans Libraries。主要是确保引入了这些包包:

  •   ? activation-1.0.2.jar
  •   ? commons-codec-1.3.jar
  •   ? commons-httpclient-3.0.jar
  •   ? commons-logging-1.0.4.jar
  •   ? jaxen-1.1-beta-8.jar
  •   ? jdom-1.0.jar
  •   ? log4j-1.2.x.jar
  •   ? mail-1.3.3_01.jar
  •   ? spring-1.2.x.jar
  •   ? stax-api-1.0.jar
  •   ? wsdl4j-1.5.2.jar
  •   ? wstx-asl-2.9.jar
  •   ? xbean-2.1.0.jar
  •   ? xbean-spring-2.2.jar
  •   ? xfire-all-1.0.jar
  •   ? XmlSchema-1.0.jar

    接下来我们要写一个服务端java类。模拟应用是一个银行转账应用,从账户A转账到账户B并需要给出金额和货币种类。我们先来实现一个接口IBankingService.java代码全文如下:

    java 代码
    1. package com.mybank.xfire.example;   
    2.   
    3. public interface IBankingService {   
    4.   
    5.   public String transferFunds(   
    6.            String fromAccount, String toAccount, double amount, String currency);   
    7.   
    8. }   
    9.   

    然后编写一个普通的Java类BankingService包含了一个叫做transferFunds()的方法来为我们完成这项工作。它需要四个输入参数:

      代码如下:

    java 代码
    1. package com.mybank.xfire.example;   
    2.   
    3. import java.text.NumberFormat;   
    4. import java.text.DecimalFormat;   
    5.   
    6. public class BankingService implements IBankingService {   
    7.   
    8.  //Default constructor.   
    9.     public BankingService(){       
    10.      }   
    11.        
    12.     /** Transfers fund from one account to another.
    13.      */  
    14.     public String transferFunds(   
    15.          String fromAccount, String toAccount, double amount, String currency){   
    16.            
    17.          String statusMessage = "";   
    18.                          
    19.         //调用业务逻辑执行操作.   
    20.         //建立并返回状态信息.   
    21.         try {   
    22.              NumberFormat formatter = new DecimalFormat("###,###,###,###.00");          
    23.              statusMessage = "COMPLETED: " + currency + " " + formatter.format(amount)+   
    24.             " was successfully transferred from A/C# " + fromAccount + " to A/C# " + toAccount;   
    25.          } catch (Exception e){   
    26.              statusMessage = "BankingService.transferFunds(): EXCEPTION: " + e.toString();   
    27.          }   
    28.         return statusMessage;   
    29.      }   
    30.   
    31. }   
    32.   

    你可以看到BankingService是一个普通的Java类,没有任何代码告诉我们它将会在Web Services中使用。只是要有默认的构造函数,类型是public。这是必须的。否则,XFire不能够初始化这个类。好的,这里我们不需要增加任何 东西。我们所有的工作都在部署描述符里完成。

    Web应用的部署描述符

      在Java中,Web应用程序通常需要至少一个部署描述符(叫做web.xml)对其进行配置。XFire本身是一个基于servlet的应用 程序。因此,我们需要增加必要的引用到描述符文件中。然后我们还必须配置将要创建的Web Services。我们使用一个称为services.xml的新文件来完成这件事。在使用Eclipse工具构建工程的时候我们已经完成了这项配置(参 见(上)文)。

    services.xml

      现在我们不得不说一下我们的Web Services的由什么组成的了。这由一个叫做services.xml的文件完成,当这个项目在tomcat发布后,它存放在WEB- INF/classes/META-INF/xfire目录下,它在Web应用程序的标准类路径中。而在Eclipse环境中我们可以清除的看到 Eclipse已经为我们把它清楚的列在项目路径中。这里是services.xml中的基本配置条目:

    xml 代码
    1. <beans xmlns="http://xfire.codehaus.org/config/1.0">  
    2.      
    3.   <service>  
    4.     <name>Banking</name>  
    5.     <namespace>mybank</namespace>  
    6.     <serviceClass>com.mybank.xfire.example.IBankingService</serviceClass>  
    7.     <implementationClass>com.mybank.xfire.example.BankingService</implementationClass>  
    8.   </service>     
    9.      
    10. </beans>  

    Web Services的定义包含在元素中,它还含有一些子元素。

    第一个子元素是Banking,它可以是你提供任何的合法名字。这将会被客户端程序和其它需要定位你的服务的组件用到。例如,在服务准备好以后,你将在浏览器上使用这个名字来查看WSDL。

    下一个子元素是。任何合法的XML名字都是可以的。用来唯一标识你的服务的各个参数。(注释@)

    注释@:Namespace派什么用?namespace的作用是要避免命名冲突。如果我建立一项Web
    Service,其中的WSDL文件包含一个名为"foo"的元素,而你想要使用我的服务与另一项服务连接作为补充,这样的话另一项服务的WSDL文件就 不能包含名为"foo"的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时,才可以取相同的名字。如果有了表示区别的 namespace,我的网络服务里的"foo"就可以表示完全不同于另一个网络服务里"foo"的含义。在你的客户端里,你只要加以限制就可以引用我 的"foo"。


    元素包含了Java类的名字,它指定了方法签名。在我们的例子中,它是接口 IBankingService。如果Java类没有实现任何接口,你就需要把类的名字放在这里。在你的Java类或者接口中可能有几个方法。只需要一个 入口把它们全部发布为Web Services。

      保存了实现方法的Java类名。这是一个可选元素。如果上一个元素包含了一个接口,那么相应的实现类必须在这里指定。

      就是这样。我们的Web Services配置完成了

    我们如何知道Web Service正在工作呢?

      为了了解Web Service是否正在工作,我们需要测试。首先,我们测试来看WSDL是否可用。我们在浏览器中输入URL。哪个URL?因为我们的应用程序的war文 件是aa.war,并且在services.xml中给出的服务名是Banking,WSDL的URL应该 是:http://localhost:8080/aa/services/Banking?wsdl。

      请注意:URL的第一部分,例如,http://localhost:8080,可能会根据你的应用服务器不同而不同。无论怎样,当你输入URL后,将会看到一个XML文档,这个文档叫做服务的WSDL。如果你看到了,这就是你的应用作为Web Service已经可用的第一个证明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值