Axis2發布webservice(3)--axis2生成wsdl文件,並利用wsdl文件來生成WebService的Java代碼


一、利用axis2生成wsdl文件

1、file->New->Other->Axis2 Code Generator

clip_image002

2、選擇第2個,點擊next

clip_image004

3,先點擊add folder->瀏覽選擇WebService項目下的bin文件夾,然后在fully Qualified Class name中填入類路徑(包括包名)

clip_image006

然后點擊Test 測試是否正確。

clip_image008

點擊Next

4、可以看到即將發布的WebService名稱和命名空間

clip_image010

5、繼續Next,選擇wsdl文件保存目錄

clip_image012

這樣services.wsdl文件就生成了。

二、用axis2工具根據wsdl文件生成java文件,並編寫客戶端調用的代碼

1、file->new->other->axis2 code generetor

clip_image002[1]

2、選擇第1項,根據wsdl文件生成Java代碼,點擊Next

clip_image014

3、然后選擇第一步生成的wsdl文件

clip_image016

4、點擊Next,就可以看到你要生成指定方法的代碼的選項,我選擇的是第2項

clip_image024

注意的是在選擇PortName的時候,不同的選項將會生產不同的調用代碼,其調用方式也略有不同

5、點擊Next,選擇代碼輸出保存的目錄,最好不要選擇WebService的目錄,換一個新的Javaproject目錄,不然會跟之前的文件沖突,然后點擊Finish

clip_image026

6、打開輸出的文件夾,發現多出了很多文件

1

三、 編寫客戶端代碼

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


免責聲明!

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



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