Java 如何扩展用WebFault注释的wsimport生成的异常?
我正在用Java从现有的WSDL构建一个web服务。Java 如何扩展用WebFault注释的wsimport生成的异常?,java,soap,annotations,jbossws,Java,Soap,Annotations,Jbossws,我正在用Java从现有的WSDL构建一个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 faulI
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
}
现在,当我从应用程序中抛出myservicecfault
的实例时,我希望这些错误能够在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
注释没有被myservicecfault
继承,但在明确添加此注释后,我再次尝试,但没有成功
你知道我做错了什么吗?无论如何,我是这样实现的
import javax.xml.ws.WebFault;
@WebFault(name = "SomeException")
public class SomeException extends Exception {
private FaultBean faultInfo;
public SomeException(String message, FaultBean faultInfo) {
super(message);
this.faultInfo = faultInfo;
}
public SomeException(String message, FaultBean faultInfo,
Throwable cause) {
super(message, cause);
this.faultInfo = faultInfo;
}
public FaultBean getFaultInfo() {
return faultInfo;
}
}
这会产生如下结果:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>SomeErrorString</faultstring>
<detail>
<ns2:SomeException xmlns:ns2="http://namespace/">
<message>SomeErrorMessage</message>
</ns2:SomeException>
</detail>
</S:Fault>
</S:Body>
</S:Envelope>
S:服务器
SomeErrorString
一些错误消息