我正在从现有的 WSDL 用 Java 构建 Web 服务。该wsimport
工具已生成绑定到服务模式中的元素的所有 Java 类。特别是,故障声明产生以下类:
@javax.xml.ws.WebFault(name = "Fault", targetNamespace = "http://my.company.com/service-1")
public class ServiceFault extends java.lang.Exception {
// constructors and faulInfo getter
}
现在我想扩展这个类,所以我可以添加更多行为:
public class MyServiceFault extends ServiceFault {
// some behavior
}
当我现在从我的应用程序中抛出实例时MyServiceFault
,我希望这些错误能够在 SOAP 答案中正确序列化为 XML。但相反,我得到了这样的东西:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
<env:Body>
<env:Fault>
<faultcode>env:Server</faultcode>
<faultstring>Some fault string.</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
也就是说,我完全错过了 faultInfo 元素。我的 SOAP 堆栈将MyServiceFault
其视为任何其他异常,而不是表示服务故障的异常。
我首先认为这是因为@WebFault
注释不是由 继承的MyServiceFault
,但是我在显式添加此注释后再次尝试,但没有成功。
知道我在这里做错了什么吗?