一、利用axis2生成wsdl文件
1、file->New->Other->Axis2 Code Generator
2、選擇第2個,點擊next
3,先點擊add folder->瀏覽選擇WebService項目下的bin文件夾,然后在fully Qualified Class name中填入類路徑(包括包名)
然后點擊Test 測試是否正確。
點擊Next
4、可以看到即將發布的WebService名稱和命名空間
5、繼續Next,選擇wsdl文件保存目錄
這樣services.wsdl文件就生成了。
二、用axis2工具根據wsdl文件生成java文件,並編寫客戶端調用的代碼
1、file->new->other->axis2 code generetor
2、選擇第1項,根據wsdl文件生成Java代碼,點擊Next
3、然后選擇第一步生成的wsdl文件
4、點擊Next,就可以看到你要生成指定方法的代碼的選項,我選擇的是第2項
注意的是在選擇PortName的時候,不同的選項將會生產不同的調用代碼,其調用方式也略有不同
5、點擊Next,選擇代碼輸出保存的目錄,最好不要選擇WebService的目錄,換一個新的Javaproject目錄,不然會跟之前的文件沖突,然后點擊Finish
6、打開輸出的文件夾,發現多出了很多文件
三、 編寫客戶端代碼
package test; import java.rmi.RemoteException; import java.util.List; import com.hoo.service.EditUser; import com.hoo.service.EditUserResponse; import com.hoo.service.GetUser4Array; import com.hoo.service.GetUser4ArrayResponse; import com.hoo.service.ManagerUserServiceStub; import com.hoo.service.xsd.User; public class ManagerUserServiceClient { public static void main(String[] args) throws RemoteException { /* ManagerUserServiceStub文件對應的是整個WebService * 該類中有對應於WebService中public方法的方法 * 通過實例化一個該類的對象,並調用相應的方法,就可以調用WebService的方法 * */ ManagerUserServiceStub stub = new ManagerUserServiceStub(); /* * EditUser對應的是WebService的方法,對於WebService的每個public方法,生成一個以該方法命名的類 * 但是首字母會大寫 * 該類中有相應的方法editUser * */ EditUser editUser = new EditUser(); User user = new User(); user.setAddress("China"); user.setEmail("hww@163.com"); user.setName("hww"); user.setId(1); User user1 = new User(); user1.setName("jsy"); user1.setEmail("jsy@163.com"); user1.setId(47); user1.setAddress("China"); /* * EditUser的對象要通過set方法設置方法的參數 * 比如,eidtUser(User user)方法有一個User類型的參數,那么在對應的類里面,就會有對應的設置參數的 * 方法 * */ editUser.setUser(user); /* * 對於每個方法會生成一個對應的response類 * 通過stub對象調用該方法,方法的參數是對應類的對象 * 返回值會通過response對象返回 * */ EditUserResponse eur = stub.editUser(editUser); //獲取返回值 User returnUser = eur.get_return(); System.out.println(returnUser.getName()); //調用其他方法 GetUser4Array getUser4Array = new GetUser4Array(); getUser4Array.setJ(3); GetUser4ArrayResponse response1 = stub.getUser4Array(getUser4Array); User[] user_list = response1.get_return(); for(User u:user_list){ System.out.println(u.getId()); } } }
輸出結果是:hww
22
23
24