(三)CXF之處理輸入參數與輸出類型為復雜類型的webService服務


一、需求

  • 調用webService服務,把用戶名和密碼封裝為用戶對象作為參數,返回該用戶所用友的角色列表。

 

二、發布服務

  2.1  編寫服務接口

@WebService
public interface ILogin {

    @WebResult(name="getRoleByUserResult")
    public List<Role> getRoleByUser(@WebParam(name="user")User user);

}

 

  2.2  實現服務

package com.shyroke.service;

import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import com.shyroke.bean.Role;
import com.shyroke.bean.User;

@WebService(endpointInterface="com.shyroke.service.ILogin")
public class Login implements ILogin {

    public List<Role> getRoleByUser(User user) {

        List<Role> roleList = new ArrayList<Role>();

        if (user.getUserName().equals("admin") && user.getPassWord().equals("123")) {
            roleList.add(new Role(1, "管理員"));
            roleList.add(new Role(2, "普通用戶"));

        } else if (user.getUserName().equals("user") && user.getPassWord().equals("123")) {
            roleList.add(new Role(2, "普通用戶"));

        } else {

            return null;
        }

        return roleList;
    }

}

 

  2.3  發布服務

package com.shyroke.publish;


import org.apache.cxf.jaxws.JaxWsServerFactoryBean;

import com.shyroke.service.ILogin;
import com.shyroke.service.Login;

public class PublishMain {
    public static void main(String[] args) {
        
        String address="http://localhost:3333/login";
        JaxWsServerFactoryBean factoryBean=new JaxWsServerFactoryBean();
        factoryBean.setAddress(address);
        factoryBean.setServiceClass(ILogin.class);
        factoryBean.setServiceBean(new Login());
        
        factoryBean.create();
        System.out.println("服務發布.......");
        
    }
}

  2.4  結果

 

三、客戶端調用

  3.1  根據wsdl文件生成client

 

  • 命令的含義請參考上一章節

 

 

   3.2  測試

 

package com.shyroke.service;

import java.util.List;

public class Client {
    public static void main(String[] args) {
        User user=new User();
        user.setId(1);
        user.setUserName("admin");
        user.setPassWord("123");
        
        ILogin login=new ILoginService().getILoginPort();
        List<Role> roleList=login.getRoleByUser(user);
        for(Role role:roleList) {
            System.out.println(role.getId()+"\t"+role.getRoleName());
        }
        
    }
}

  3.3  結果

 


免責聲明!

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



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