webservice Apache axis2 adb之開發實例

1.配apache axis2 運行環境

a.從apache  axis2官方網站下載 axis2.war, axis2-1.4.1-bin.zip

b.配制axis2_home ,path, class_path環境變量

2.在eclipse新建一個java project ,在工程中根據向導創建getUserInfo.wsdl. 

 

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="getUserInfo" targetNamespace="http://www.example.org/getUserInfo/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://www.example.org/getUserInfo/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
  <wsdl:types>
    <xsd:schema targetNamespace="http://www.example.org/getUserInfo/">
      <xsd:element name="getUser">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element  name="id" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="getUserResponse">
        <xsd:complexType>
          <xsd:sequence>
           <xsd:element name="name" type="xsd:string"/>
           <xsd:element name="dept" type="xsd:string"/>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="getUserResponse">
    <wsdl:part name="parameters" element="tns:getUserResponse">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getUserRequest">
    <wsdl:part name="parameters" element="tns:getUser">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="getUserInfo">
    <wsdl:operation name="getUser">
      <wsdl:input message="tns:getUserRequest">
    </wsdl:input>
      <wsdl:output message="tns:getUserResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="getUserInfoSOAP" type="tns:getUserInfo">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="getUser">
      <soap:operation soapAction="http://www.example.org/getUserInfo/getUser"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="getUserInfo">
    <wsdl:port name="getUserInfoSOAP" binding="tns:getUserInfoSOAP">
      <soap:address location="http://www.example.org/"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

3. 使用axis2自帶的工具wsdl2ajva 生成客戶端和服務端代碼

命令:wsdl2java -uri getUserInfo.wsdl  -o bulid -s -ss -ssi -sd -d adb 可以生成服務端代碼

命令:wsdl2java -uri getUserInfo.wsdl  -o bulid  -d adb -s 可以生成客戶端代碼

4.修改服務器端的類

 

package org.example.www.getuserinfo;

public class GetUserInfoSkeleton implements GetUserInfoSkeletonInterface {

 /**
  * Auto generated method signature
  *
  * @param getUser0
  */

 public GetUserResponse getUser(
   GetUser getUser0) {
  GetUserResponse res = new GetUserResponse();
      if (getUser0.getId().endsWith("001")){
  res.setDept("IT");
  res.setName("APACHE");
      }
      System.out.println(getUser0.getId());
  return res;
 }

}

在這里也可以填寫您自已的業務羅輯 ,註意返回是GetUserResponse 的對象
5.修改services.xml中部份代碼,為紅色部份

<?xml version="1.0" encoding="UTF-8"?>
<!-- This file was auto-generated from WSDL -->
<!-- by the Apache Axis2 version: 1.4.1  Built on : Aug 13, 2008 (05:03:35 LKT) -->
<serviceGroup>
    <service name="getUserInfo" scope="application" >
        <messageReceivers>
            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.example.www.getuserinfo.GetUserInfoMessageReceiverInOut"/>
        </messageReceivers>
        <parameter name="ServiceClass">org.example.www.getuserinfo.GetUserInfoSkeleton</parameter>
        <parameter name="useOriginalwsdl">false</parameter>
        <parameter name="modifyUserWSDLPortAddress">true</parameter>
        <operation name="getUser" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://www.example.org/getUserInfo/">
            <actionMapping>http://www.example.org/getUserInfo/getUser</actionMapping>
            <outputActionMapping>http://www.example.org/getUserInfo/getUserInfo/getUserResponse</outputActionMapping>
        </operation>
    </service>
</serviceGroup>

 

6.產生getUserInfo.aar文件

將服務端中org.example.www.getuserinfo包下所有的class 文件 和 META-INF/services.xml 拷貝到一個目錄下

在cmd 進入這個目錄,並執行命令:jar cvf  getUserInfo.aar .

註意目錄結構。

7. 將發布到 getUserInfo.aar 到tomcat 中webapps/axis2/WEB-INF/services目錄下,啟動tomcat ,輸入網址http://localhost:8080/axis2/services/listServices

可以看到webservice 了。

8.客戶端調用程式

package org.example.www.getuserinfo;

import java.rmi.RemoteException;

import org.apache.axis2.AxisFault;

public class client {
 public static void main(String[] args) throws RemoteException, AxisFault {

  GetUserInfoStub stub = new GetUserInfoStub(
    "http://localhost:8080/axis2/services/getUserInfo");
  GetUserInfoStub.GetUser user = new GetUserInfoStub.GetUser();
  user.setId("001");
     GetUserInfoStub.GetUserResponse res = stub.getUser(user);
  System.out.println(res.getDept());
  System.out.println(res.getName());

 }

}

9.運行結果

IT

APACHE

 

 


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值