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