zoukankan      html  css  js  c++  java
  • (三)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()+"	"+role.getRoleName());
            }
            
        }
    }

      3.3  结果

  • 相关阅读:
    Java中 Jwt
    Python中Jwt
    jwt流程
    Vue Demons
    Vue基础
    Mysql
    MongoDb
    2020/03/07-基础复习day_02
    2020/03/07-基础复习day_01
    基于springboot+dubbo的简易分布式小Demo
  • 原文地址:https://www.cnblogs.com/shyroke/p/7954552.html
Copyright © 2011-2022 走看看