我有一个这样定义的 CXF Fault 类:
@WebFault(name = "FaultContainer",
faultBean = "myapi.transport.FaultContainer",
targetNamespace = "mynmspace")
public class ServiceFaultSecond extends java.lang.Exception {
...
}
如您所见,它扩展了普通的 java 异常。问题是,在 CXF 生成的 WSDL 中,这个类是这样表示的:
<xs:complexType name="serviceFaultSecond">
<xs:complexContent>
<xs:extension base="tns:exception">
<xs:sequence>
<xs:element minOccurs="0" name="faultInfo" type="tns:FaultContainer"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
这里它扩展了一个“tns:exception”(比扩展 tns:throwable)。现在,当我尝试生成客户端时,出现编译错误 - 它需要 mynmspace.Exception 和 mynmspace.Throwable 而不是 java.lang...
通常 CXF 不会将 xs:extension 元素放入 WSDL,为什么现在会发生?