JAX-WS中的服务端的自定义异常使用javax.xml.ws.WebFault注解来完成,这样的异常会在WSDL文件中的<wsdl:operation...中的子元素<wsdl:fault...。
package com.nantian.service; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.ws.WebFault; @WebFault(name="HelloServiceException") public class HelloServiceException extends Exception { /** * */ private static final long serialVersionUID = 1L; private HelloServiceFault details; public HelloServiceException(String msg) { super(msg); } public HelloServiceException(HelloServiceFault details) { super(); this.details = details; } public HelloServiceFault getFaultInfo() { return details; } @XmlRootElement(name = "HelloServiceFault") public static class HelloServiceFault { private String t; public HelloServiceFault(String t) { super(); this.t = t; } public HelloServiceFault() { super(); } public String getT() { return t; } public void setT(String t) { this.t = t; } } }
这里需要注意一下几个问题:
1)自定义异常必须包含一个异常信息msg,和一个封装具体错误消息的bean,这个bean上必须使用JAXB注解
2)自定义异常必须有一个getDefaultInfo()的方法返回封装具体错误信息的bean。