您当前的位置: 首页 > 

宝哥大数据

暂无认证

  • 0浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

webservice25--基于契约优先开发用户管理小功能--异常处理

宝哥大数据 发布时间:2017-10-17 07:23:26 ,浏览量:0

1、创建异常类UserException , 此处继承RuntimeException, 注意这是有问题的
package com.chb.service.exception;

/**
 * 首先继承RuntimeException
 */
public class UserException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public UserException() {
        super();
    }

    public UserException(String arg0, Throwable arg1, boolean arg2, boolean arg3) {
        super(arg0, arg1, arg2, arg3);
    }

    public UserException(String arg0, Throwable arg1) {
        super(arg0, arg1);
    }

    public UserException(String arg0) {
        super(arg0);
    }

    public UserException(Throwable arg0) {
        super(arg0);
    }
}
2、在UserDao中, 添加异常
package com.chb.service.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.chb.service.model.User;

public class UserDao {
    private static final Map users = new HashMap();

    private static UserDao userDao= null;
    private  UserDao() {
        users.put("chb", new User("chb", "CHB", "123456"));
    }
    public static UserDao newInstance() {
        if (userDao == null) {
            userDao = new UserDao();
        }
        return userDao;
    }

    public boolean add(User user) {
        if(users.containsKey(user.getUsername())) throw new UserException("用户已经存在...");
        User u = users.put(user.getUsername(), user);
        if (u != null) {
            return true;
        }
        return false;
    }

    public boolean delete(String username) {
        User u = users.remove(username);
        if (u != null) {
            return true;
        }
        return false;
    }

    public boolean login(String username, String password) {
        if (users.containsKey(username)) throw new UserException("用户不存在...");
        User u = users.get(username);
        if(password.equals(u.getPassword())) {
            return true;
        }else {
            throw new UserException("密码错误。。。");
        }
    }

    public List list() {
        return (List) users.values();
    }
}
3、在wsdl中添加异常 3.1、user.xsd添加异常对象。
    
    
3.2、user.xsd添加异常类型
    
    
        
            
        
    
3.3、user.wsdl中创建异常的message
  
  
    
  
3.4、user.wsdl中为portType设置异常, 指定在那些方法中回抛出异常。

这里写图片描述

3.5、user.wsdl中, 为binding添加异常。指定异常以那种格式设置, 以那种编码格式传递。注意:我们会在输入抛出异常。

这里写图片描述

完整的user.xsd



    
    

    
    
    
    
    
    
    
    
    
    
    


    
    
        
            
        
    

    
        
            
        
    
    
        
            
        
    


    
        
            
        
    
    
        
            
        
    

    
        
            
            
        
    
    
        
            
        
    

    
        
        
    
    
        
        
            
        
    


    
    
        
            
            
            
        
    
    
        
            
        
    

    
    
        
            
            
        
    

完整的user.wsdl



  
    
        
    
  

  
  
    
  

  
    
  
  
    
  
  
    
  
  
    
   
  
    
  
  
    
   
  
    
  
  
    
  


  
  
    
    
      
      
      
      
    
    
      
      
     
    
      
      
      
      
    
    
      
      
      
  


  
  
    

    
      
        
      
      
        
      
      
        
      
    
    
      
        
      
      
        
      
    
    
      
        
      
      
        
      
      
        
      
    
        
      
        
      
      
        
      
        

  


  
  
    
      
    
  

4、重新导出 4.1、服务端重新导出, 根据wsdl
G:\JavaWeb\qyyx_01\WebContent\WEB-INF\wsdl>wsimport -d  G:\JavaWeb\qyyx_01\src -keep -verbose user.wsdl
4.1.1、替换IUserService , 会发现add() 异常抛出。

这里写图片描述

4.2、重新导出客户端 4.2.1、重启服务端 4.2.2、服务端重新导出, 根据http://localhost:9999/us?wsdl
G:\JavaWeb\qyyx_01\WebContent\WEB-INF\wsdl>wsimport -d  G:\JavaWeb\qyyx_01_client\src -verbose -keep http://localhost:9999/us?wsdl
5、启动服务, 测试客户端。
package com.chb.service.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;

import com.chb.service.IUserService;
import com.chb.service.User;
import com.chb.service.UserException_Exception;
import com.chb.service.UserService;

/**
 * wsimport -d  G:\JavaWeb\qyyx_01_client\src -verbose -keep http://localhost:9999/us?wsdl
 */
public class MyClient {
    public static void main(String[] args) throws MalformedURLException {
        //创建访问的URL 
        URL url = new URL("http://localhost:9989/us?wsdl");

        QName qName = new QName("http://service.chb.com/", "UserService");

        UserService msis = new UserService(url, qName);
        //获取IMyService, 简单多了
        IUserService iMyService = msis.getUserServicePort();
        User user = new User();
        user.setUsername("wx");
        user.setNickname("wuxin");
        user.setPassword("111");
        try {
            iMyService.add(user);
            iMyService.add(user);
        } catch (UserException_Exception e) {
            e.printStackTrace();
        }

        for (User u : iMyService.list()) {
            System.out.println(u);
        }
        try {
            System.out.println(iMyService.login("chb", "123456"));
        } catch (UserException_Exception e) {
            e.printStackTrace();
        }
    }
}
5.1、客户端报错 5.2、服务端报错

这里写图片描述

由于UserException 继承RuntimeException ,导致Server端也报错。这个是不符合我们的要求, 应该继承Exception

实现类抛出异常。

这里写图片描述

关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0421s