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);