Axis2快速上手指南(创建WS 服务)(二)

上一篇 / 下一篇  2009-06-01 14:11:44 / 个人分类:Web Service

这不是太复杂,服务的名字为StockQuoteService,它在services.xml中指定,并且根据包名把任何Java类放到合适的位置。META-INF
目录包含关于Axis2需要来正确执行服务的额外信息。services.xml文件定义了服务本身并把Java类链接到它(参看Code Listing 3)
Code Listing 3:
服务定义文件

Java代码

  1. <service name="StockQuoteService" scope="application">   
  2.     <description>   
  3.         Stock Quote Sample Service   
  4.     </description>   
  5.     <messageReceivers>   
  6.         <messageReceiver    
  7.             mep="http://www.w3.org/2004/08/wsdl/in-only"  
  8.     class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>   
  9.         <messageReceiver   
  10.             mep="http://www.w3.org/2004/08/wsdl/in-out"  
  11.     class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>   
  12.     </messageReceivers>   
  13.     <parameter name="ServiceClass">   
  14.         samples.quickstart.service.pojo.StockQuoteService   
  15.     </parameter>   
  16. </service>  

<service name="StockQuoteService" scope="application">

   <description>

       Stock Quote Sample Service

   </description>

   <messageReceivers>

       <messageReceiver

           mep="http://www.w3.org/2004/08/wsdl/in-only"

   class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

       <messageReceiver

           mep="http://www.w3.org/2004/08/wsdl/in-out"

   class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

   </messageReceivers>

   <parameter name="ServiceClass">

       samples.quickstart.service.pojo.StockQuoteService

   </parameter>

</service>


这里你看到服务本身被定义了,以及不同的消息交换模式相关的messageReceiver类型。
META-INF
目录也是你打算包含在该程序中的自定义WSDL文件的位置。
你可以通过简单的采用该文件目录结构并复制到你的servlet引擎的webapps目录来部署一个服务,这是著名的"爆发"形式,但是你也 可以压缩你的文档到一个*.aar文件,类似于一个*.jar文件,并直接将*.aar文件放到servlet引擎的webapps目录。
既然你理解了我们在尝试完成什么,我们几乎准备好开始构建了。
首先,下载并解压合适版本的Axis2标准二进制发布。确认你设置了AXIS2_HOME变量的值来匹配你解压该版本内容的位置。
让我们看看一些创建客户端和服务的不同方式。

创建服务
在这个部分,我们将看看根据StockQuoteService创建服务的五种方式:部署Plain Old Java Objects(POJO)使用AXIOMOMElement构建服务,使用Axis2 Databinding Framework(ADB)生成服务,使用XMLBeans生成服务和使用JiBX生成服务。

部署POJOs
使用POJOs(Plain Old Java Objects)来部署服务,执行下面的步骤。
注意包含在<AXIS2_HOME>/samples/quickstart的目录结构(services.xml文件来自于该指南的第一个部分):

Java代码

  1. - quickstart   
  2.    - README.txt   
  3.    - build.xml   
  4.    - resources   
  5.      - META-INF   
  6.        - services.xml   
  7.    - src   
  8.      - samples   
  9.        - quickstart   
  10.          - service   
  11.            - pojo   
  12.              - StockQuoteService.java  

- quickstart

  - README.txt

  - build.xml

  - resources

    - META-INF

      - services.xml

  - src

    - samples

      - quickstart

        - service

          - pojo

            - StockQuoteService.java


注意你可以通过在quickstart目录键入ant generate.wsdl来生成WSDL
尽管如此,创建StockQuoteService.wsdl是可选的。它可以是直接从Java类生成的版本,或者该文件的一个自定义版本,并且services.xml是本文档前面提到的同一文件。
现在通过在quickstart目录键入ant generate.service来构建工程,该目录创建了以下目录结构:

Java代码

  1. - quickstart/build/classes   
  2.    - META-INF   
  3.      - services.xml   
  4.    - samples   
  5.      - quickstart   
  6.        - service   
  7.          - pojo   
  8.            - StockQuoteService.class  

- quickstart/build/classes

  - META-INF

    - services.xml

  - samples

    - quickstart

      - service

        - pojo

          - StockQuoteService.class


如果你想以爆发形式部署服务,重命名classes目录为StockQuoteService,并复制它到你的servlet引擎的webapps/axis2/WEB-INF/services目录。否则,复制build/StockQuoteService.aar文件到你的servlet引擎的webapps/axis2/WEB-INF/services目录。然后通过
视察以下服务列表来确认服务被正确部署:
http://localhost:8080/axis2/services/listServices
你也可以检验以下WSDL:
http://localhost:8080/axis2/services/StockQuoteService?wsdl
以及以下结构:
http://localhost:8080/axis2/services/StockQuoteService?xsd
一旦这些urls工作,让我们快速测试一下服务。让你的浏览器访问以下URL试试:
http://localhost:8080/axis2/rest/StockQuoteService/getPrice?symbol=IBM
你将得到如下应答:

Java代码

  1. <ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"><ns:return>42</ns:return></ns:getPriceResponse>  

<ns:getPriceResponse xmlns:ns="http://pojo.service.quickstart.samples/xsd"><ns:return>42</ns:return></ns:getPriceResponse>


如果你像这样调用update方法:
http://localhost:8080/axis2/rest/StockQuoteService/update?symbol=IBM&price=100
然后调用第一个getPrice url。你可以看到price被更新了。

使用AXIOM构建服务
为了使用AXIOM"从零开始"构建一个服务,执行以下步骤。
注意包含在/samples/quickstartaxiom的目录结构:

Java代码

  1. - quickstartaxiom   
  2.    - README.txt   
  3.    - build.xml   
  4.    - resources   
  5.      - META-INF   
  6.        - services.xml   
  7.        - StockQuoteService.wsdl   
  8.    - src   
  9.      - samples   
  10.        - quickstart   
  11.          - service   
  12.            - axiom   
  13.              - StockQuoteService.java   
  14.          - clients   
  15.            - AXIOMClient.java  

- quickstartaxiom

  - README.txt

  - build.xml

  - resources

    - META-INF

      - services.xml

      - StockQuoteService.wsdl

  - src

    - samples

      - quickstart

        - service

          - axiom

            - StockQuoteService.java

        - clients

          - AXIOMClient.java


由于AXIOM有一点不同,你将需要一个与POJO所用不同的services.xml文件,在Code Listing 4中显示了它的定义。
Code Listing 4:
服务定义文件

Java代码

  1. <service name="StockQuoteService" scope="application">   
  2.     <description>   
  3.         Stock Quote Service   
  4.     </description>   
  5.     <operation name="getPrice">   
  6.         <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>   
  7.     </operation>   
  8.     <operation name="update">   
  9.         <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>   
  10.     </operation>   
  11.     <parameter name="ServiceClass">samples.quickstart.service.axiom.StockQuoteService</parameter>   

TAG:

 

评分:0

我来说两句

日历

« 2024-05-25  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 3376
  • 日志数: 7
  • 建立时间: 2009-05-06
  • 更新时间: 2009-06-01

RSS订阅

Open Toolbar