Axis實現 web service接口開發 + 客戶端調用

  看到網上挺多人找webservice axis開發案例,但是網上較多的都是有點亂,初學者不太容易看得懂,所以最近看到自己終於有了點空閒時間,就上傳了一份比較簡單的webservice axis的完整案例。

只適用於初學者。


一、新建一個web項目

  1. 導入lib包。


2.配置 web.xml 

  

<!-- axis 配置 -->
  <servlet>
        <display-name>Apache-Axis Servlet</display-name>
        <servlet-name>AxisServlet</servlet-name>
        <servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
  </servlet>

<servlet-mapping>
        <servlet-name>AxisServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
</servlet-mapping>

3.然後在項目中的src下創建包,再在包下創建一個類,用來提供web service接口。

package com;
public class HelloWorld {
    public String sayHello(String msg){
        if(null==msg || "".equals(msg)){
            return "您好!";
        }else{
            return "您好" + msg + "!";
        }
    }
    public int sayAge(){
        return 28;
    }
}

4.配置 server-config.wsdd文件。

<!-- deployment 表明這是一個axis部署描述文件 -->
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <!-- axis提供的一個web service服務。service標籤中parameter allowedMethod用於指定一個以空格分隔的方法名,
                           只有這些方法可以通過web service訪問。也可以將這個值指定爲“*”表示所有的方法都可以訪問。-->  
    <service name="axisEm" provider="java:RPC">  
        <!-- 指定類名 -->  
        <parameter name="className" value="com.HelloWorld" />  
        <!-- 類中允許訪問的方法 -->  
        <parameter name="allowedMethod" value="*"></parameter>  
        <!-- 命名空間 -->
        <namespace>http://xml.apache.org/axis/wsdd/</namespace>
        <parameter name="scope" value="Application"/>
    </service>  
    <!-- 服務器端的傳輸方式. 指定處理器 -->  
    <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
    <transport name="http">  
        <requestFlow>  
            <handler type="java:org.apache.axis.handlers.http.URLMapper"/><!-- 引用上邊的 -->  
        </requestFlow>  
    </transport>  
</deployment>

5.運行該項目,訪問http://localhost:8080/axisTest/services/axisEm?wsdl

  如果報錯,則返回項目檢測配置是否有問題等,成功則會得到wsdl文檔。

二、客戶端調用

package com.test;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class webTest {
    public static void main(String[] args) {
        String _newendPoint = 
                "http://localhost:8080/axisTest/services/helloWorldService?wsdl";
        String _newNameSpace = "http://xml.apache.org/axis/wsdd/";
        try {
            Service service = new Service();
            Call call = (Call) service.createCall();
            call.setTargetEndpointAddress(new java.net.URL(_newendPoint));
            call.setOperationName(new QName(_newNameSpace, "sayHello"));
            String s = (String) call.invoke(new Object[] { "st001" });
            System.out.println(s);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}


案例下載地址:http://down.51cto.com/data/2220274

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章