webservice的使用-axis1-01


1.搭建axis服務器

  1.1 下載axis-bin-1_4.zip文件並解壓

  1.2 拷貝\axis-1_4\webapps目錄下的axis到tomcat目錄下的webapps目錄下並啟動

  1.3 在瀏覽器中輸入http://localhost:8080/axis/ 如果能進入到axis主頁就表示是搭建成功

    

2.發布自己的應用到axis服務器(即時發布和定制發布)

  2.1 即時發布(僅適用於單個java文件,且沒有包和jar包,且需要有源碼)(jws)

    發布步驟:

      1)編寫單個java文件

public class HelloWS {
    public String hello(String a,String b) {
        return "response by server "+a +","+b
    }
}

       2)將HelloWS.java拷貝到tomcat下的webapps/axis目錄下,並改名為HelloWS.jws,重啟tomcat

        

      3 )在瀏覽器中輸入http://localhost:8080/axis/HelloWS.jws看到以下界面表示發布成功

        

      4) 點擊上圖的Click to see the WSDL如果報以下錯誤,修改jdk的版本為1.6(本人測試,不支持1.8)

        

  2.2 定制發布(WSDD)

    2.2.1 帶有包結構的class文件進行發布

      1) 編寫java代碼並進行編譯為為class文件      

package com.beifeng.hadoop.webservice.server;
public class HelloWSDD { private int counter=0; public String hello(String name) { counter++; System.out.println("訪問次數:"+counter); return "歡迎訪問axis服務器:"+name; } public float add(float a,float b) { counter++; System.out.println("訪問次數:"+counter); return a+b; } }

       2) 將編譯后的class文件及包結構拷貝到tomcat\webapps\axis\WEB-INF\classes目錄下

        

      3)在axis\WEB-INF\server-config.wsdd文件中添加要發布的服務,如果沒有該文件在其他地方進行拷貝   

  <!--要發布的服務名稱 -->
  <
service name="HelloWSDD" provider="java:RPC">
     <!--類名-->
<parameter name="className" value="com.beifeng.hadoop.webservice.server.HelloWSDD" />
     <!--要發布的方法--> <parameter name="allowedMethods" value="hello,add" />
     <parameter name="scope" value="application"/> 
</service>

      參數scope的值:requet、session或application

      request:Axis為每一個SOAP的請求產生一個服務對象,針對於請求(默認)

       session:Axis為每一個調用webservice的客戶端生成一個對象,針對於會話

      application:在服務器內存中直接創建一個對象,每次請求直接返回

    4)重啟tomcat,在瀏覽器中輸入http://location:8080,點擊list即可看到如下頁面

      

3. 客戶端調用

  3.1 調用jws即時發布的HelloWS.jws的hello方法

//服務地址
String url="http://localhost:8080/axis/HelloWS.jws";
        
//構建web service 服務
Service service=new Service();
        
//創建一個調用
Call call=(Call) service.createCall();
        
 //設置調用的地址
call.setTargetEndpointAddress(url);
        
//設置要調用的方法
call.setOperationName(new QName(url, "hello"));
        
//執行該調用並傳遞參數
String result=(String) call.invoke(new Object[]{"teacher","student"});
        
//返回結果:response by server teacher,student
System.out.println(result);

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM