我不是AXIS2专家,因此我使用Eclipse生成自下而上的Web服务。我正在发布2个方法作为webservices。这些方法被定义为抛出java.lang.Exception,以便在调用以异常结束的webservice时生成SOAPFault。
public class sample {
public String someMethod() throws Exception {
throw new CustomException("Error: blabla");
}
public String someOtherMethod() throws Exception {
throw new CustomException("Error: blabla");
}
}
发布webservice后,一切正常。但AXIS2生成的WSDL似乎有缺陷。有两个ExceptionFault元素(每个方法一个?),这对一些Web服务客户来说是个问题。
<xs:element name="ExceptionFault">
<xs:complexType>
<xs:sequence>
<xs:element name="Exception" nillable="true" type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
有什么问题?我的实施有问题吗?我也尝试声明方法直接抛出CustomException,或抛出异常,但没有成功...
马丁
答案 0 :(得分:1)
如果从方法签名中删除“throws Exception”,它将不会生成带有Exception元素的WSDL。
如果您的CustomException扩展RuntimeException(即它是一个未经检查的异常),那么你会没事的。 RunisException将由Axis正确转换为SOAPFault。