本文主要讲的是soap的简单的异常处理
说明:本次文章会在前面所讲的实例上来扩充,来详细的说明soap的异常处理。
服务端代码:
1.接口类:
package com.wyj.service;
import javax.jws.WebService;
@WebService
public interface IMyService {
public int add(int a,int b);
public String sayHi(String name);
public User addUser(User user);
public User login(String username,String password) throws UserException;
}
相比之前的服务,本次添加了adduser和login方法
2.实现类:
package com.wyj.service;
import java.util.ArrayList;
import java.util.List;
import javax.jws.WebService;
@WebService(endpointInterface="com.wyj.service.IMyService")
public class MyServiceImpl implements IMyService {
private static List<User> users = new ArrayList<User>();
@Override
public int add(int a, int b) {
System.out.println("Server:"+a+"+"+b+"="+(a+b));
return a+b;
}
@Override
public String sayHi(String name) {
System.out.println("Server:Hi," + name);
return "Hi" + name;
}
@Override
public User addUser(User user) {
users.add(user);
return user;
}
@Override
public User login(String username, String password) throws UserException {
for(User user:users) {
if(username.equals(user.getUsername())&&password.equals(user.getPassword()))
return user;
}
throw new UserException("用户不存在!");
}
}
在login方法中可以看到,当用户不存在是,会抛出UserException的异常,说明用户不存在。在接下来的客户端代码中,我将会进行验证。
3.其他辅助类(User类和UserException类)
User类:package com.wyj.service;
public class User {
private int id;
private String username;
private String password;
public User() {
super();
}
public User(int id, String username, String password) {
super();
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserExcption只需要继承Exception类即可,由于比较简单这里就显示代码。
2.客户端:
客户端的生成方法在入门(二)这里就不在详细说明。
下面主要来说明客户端应用程序的编写
客户端MyClient类的代码如下:
package com.wyj.service;
import javax.xml.soap.SOAPException;
import javax.xml.ws.soap.SOAPFaultException;
public class MyClient {
public static void main(String[] args) {
MyServiceImplService myservice = new MyServiceImplService();
IMyService service = myservice.getMyServiceImplPort();
System.out.println(service.add(22, 13));
System.out.println(service.sayHi("monkey2"));
User user = new User();
user.setId(1);
user.setUsername("zhansan");
user.setPassword("123456");
service.addUser(user);
try {
service.login("zhansan", "12346");
} catch (UserException_Exception e) {
System.out.println(e.getMessage());
}
}
}
客户端首先添加了一个名为zhansan,密码为123456的用户,然后登陆。登陆时,使用用户名为zhansan,密码为12346.。本文中是故意错误,来验证soap的错误的消息处理是否执行。
客户端的输出结果为:
35
Himonkey2
用户不存在!
在服务端输出结果为:
Server:22+13=35
Server:Hi,monkey2
说明soap消息的异常处理成功。
总体说来,soap消息的异常处理比较的简单,没有什么难度,而本文也只是粗略地罗列出代码来展示了soap消息中异常的处理方法。在下一篇文章中,将会介绍soap的hander的处理方式,这才是在web服务中应用的比较多的处理方式。
最后,在平安夜,祝大家节日快乐,也希望在接下来的时间里,我在技术方面有所进步。