Webservice_23_SOAP的基于契约优先开发用户管理_添加异常
发布时间:2020-12-17 00:11:22 所属栏目:安全 来源:网络整理
导读:非常感谢孙浩老师。 ? 为add和login方法增加异常处理。 先增加UserException.java package cn.lichen.exception;public class UserException extends Exception {public UserException() {}public UserException(String message) {super(message);}public Us
非常感谢孙浩老师。 ? 为add和login方法增加异常处理。 先增加UserException.java package cn.lichen.exception; public class UserException extends Exception { public UserException() { } public UserException(String message) { super(message); } public UserException(Throwable cause) { super(cause); } public UserException(String message,Throwable cause) { super(message,cause); } public UserException(String message,Throwable cause,boolean enableSuppression,boolean writableStackTrace) { super(message,cause,enableSuppression,writableStackTrace); } }
修改wsdl: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service.lichen.cn" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="UserService" targetNamespace="http://service.lichen.cn"> <wsdl:types> <xsd:schema targetNamespace="http://service.lichen.cn"> <!-- <xsd:include schemaLocation="user.xsd"></xsd:include> --> <xsd:element name="add" type="tns:addType" /> <xsd:element name="addResponse" type="tns:addResponseType" /> <xsd:element name="delete" type="tns:deleteType" /> <xsd:element name="deleteResponse" type="tns:deleteResponseType" /> <xsd:element name="list" type="tns:listType" /> <xsd:element name="listResponse" type="tns:listResponseType" /> <xsd:element name="login" type="tns:loginType" /> <xsd:element name="loginResponse" type="tns:loginResponseType" /> <!-- 增加异常处理 --> <xsd:element name="UserException" type="tns:UserException"></xsd:element> <xsd:complexType name="addType"> <xsd:sequence> <xsd:element name="user" type="tns:user" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="addResponseType"> <xsd:sequence /> </xsd:complexType> <xsd:complexType name="deleteType"> <xsd:sequence> <xsd:element name="username" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="deleteResponseType"> <xsd:sequence /> </xsd:complexType> <xsd:complexType name="listType"> <xsd:sequence /> </xsd:complexType> <xsd:complexType name="listResponseType"> <xsd:sequence minOccurs="1" maxOccurs="unbounded"> <xsd:element name="user" type="tns:user" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="loginType"> <xsd:sequence> <xsd:element name="username" type="xsd:string" /> <xsd:element name="passwrod" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="loginResponseType"> <xsd:sequence> <xsd:element name="user" type="tns:user" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="user"> <xsd:sequence> <xsd:element name="username" type="xsd:string" /> <xsd:element name="nickname" type="xsd:string" /> <xsd:element name="passwrod" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <!-- 增加异常处理 --> <xsd:complexType name="UserException"> <xsd:sequence> <xsd:element name="message" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:schema> </wsdl:types> <!-- 增加异常处理 --> <wsdl:message name="UserException"> <wsdl:part element="tns:UserException" name="fault" /> </wsdl:message> <wsdl:message name="add"> <wsdl:part element="tns:add" name="parameters" /> </wsdl:message> <wsdl:message name="addResponse"> <wsdl:part element="tns:addResponse" name="parameters" /> </wsdl:message> <wsdl:message name="delete"> <wsdl:part element="tns:delete" name="parameters" /> </wsdl:message> <wsdl:message name="deleteResponse"> <wsdl:part element="tns:deleteResponse" name="parameters" /> </wsdl:message> <wsdl:message name="login"> <wsdl:part element="tns:login" name="parameters" /> </wsdl:message> <wsdl:message name="loginResponse"> <wsdl:part element="tns:loginResponse" name="parameters" /> </wsdl:message> <wsdl:message name="list"> <wsdl:part element="tns:list" name="parameters" /> </wsdl:message> <wsdl:message name="listResponse"> <wsdl:part element="tns:listResponse" name="parameters" /> </wsdl:message> <wsdl:portType name="IMyService"> <wsdl:operation name="add"> <wsdl:input message="tns:add" /> <wsdl:output message="tns:addResponse" /> <!-- 增加异常处理 --> <wsdl:fault name="UserException" message="tns:UserException"></wsdl:fault> </wsdl:operation> <wsdl:operation name="delete"> <wsdl:input message="tns:delete" /> <wsdl:output message="tns:deleteResponse" /> </wsdl:operation> <wsdl:operation name="login"> <wsdl:input message="tns:login" /> <wsdl:output message="tns:loginResponse" /> <!-- 增加异常处理 --> <wsdl:fault name="UserException" message="tns:UserException"></wsdl:fault> </wsdl:operation> <wsdl:operation name="list"> <wsdl:input message="tns:list" /> <wsdl:output message="tns:listResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="userServiceSOAP" type="tns:IMyService"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="add"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> <!-- 增加异常处理 --> <wsdl:fault name="UserException"> <soap:fault name="UserException" use="literal" /> </wsdl:fault> </wsdl:operation> <wsdl:operation name="delete"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> <wsdl:operation name="login"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> <!-- 增加异常处理 --> <wsdl:fault name="UserException"> <soap:fault name="UserException" use="literal" /> </wsdl:fault> </wsdl:operation> <wsdl:operation name="list"> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="UserService"> <wsdl:port binding="tns:userServiceSOAP" name="UserServicePort"> <soap:address location="http://localhost:8800/us" /> </wsdl:port> </wsdl:service> </wsdl:definitions>
使用wsImport导出Java文件,所有拷贝到客户端,IMyService.java拷贝到服务端。 修改IMyService: 删除: ? 修改: 为: 为实现类增加异常扑获处理: public void add(User user) throws UserException { if (users.containsKey(user.getUsername())) throw new UserException("用户名已经被占用了"); users.put(user.getUsername(),user); } public User login(String username,String password) throws UserException { if (!users.containsKey(username)) throw new UserException("用户不存在"); User user = users.get(username); if (!password.equals(user.getPassword())) throw new UserException("用户密码不正确!"); return user; }
@Override public void add(User user) throws UserException{ userdao.add(user); } @Override public User login(String username,String passwrod) throws UserException{ return userdao.login(username,passwrod); } ? 客户端测试方法: @Test public void testAdd(){ try { User user = new User(); user.setUsername("lisi"); user.setNickname("李四"); user.setPasswrod("123"); service.add(user); } catch (UserException_Exception e) { System.out.println(e.getMessage()); } } @Test public void testLogin(){ try { System.out.println(service.login("fds","78").getNickname()); } catch (UserException_Exception e) { System.out.println(e.getMessage()); } } ? 结果: 客户端控制台: 服务端控制台: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |