我正在使用 JAX-WS 创建一个 Web 服务(我正在使用 Java 到 WSDL 方法创建它)。
我无法让我的例外按我的要求工作。
我创建了以下异常类:
@WebFault
public class MyWebServiceException extends SOAPFaultException {
private static final long serialVersionUID = 8234753208722614057L;
protected MyWebServiceException(SOAPFault fault) {
super(fault);
}
protected MyWebServiceException(SOAPFault fault, Throwable throwable) {
this(fault);
super.setStackTrace(throwable.getStackTrace());
}
}
这允许我在我的 SOAP 响应中包含以下内容:
<faultcode>E0010</faultcode>
<faultstring>Invalid Report</faultstring>
<detail>
<ns2:exception class="com.example.web.common.exceptions.MyWebServiceException" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
<message>Invalid Report</message>
<ns2:stackTrace>
<ns2:frame class="com.example.web.common.exceptions.ExceptionHandler" file="ExceptionHandler.java" line="34" method="getWebException"/>
但是,因为我的异常是SOAPFaultException
which extends RuntimeException
,它没有被添加到 WSDL,所以当服务的用户生成他们的客户端存根时,不包括异常。
有谁知道如何创建这个异常来给我预期的输出(即包括故障代码和故障字符串)但也出现在 WSDL 中(我猜它需要是一个检查异常)
我搜索了如此高和低以想出我已经拥有的东西!