Webservice_23_SOAP的基于契约优先开发用户管理_添加异常

非常感谢孙浩老师。

 

为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());
		}
	}

 

结果:

客户端控制台:

服务端控制台:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值