我正在开发一个基于JAX-WS的应用程序。我使用wsgen
从服务器生成WSDL,然后使用wsimport
构建客户端库。我正在编写自己的自定义异常以抛出我的方法调用。代码结构如下。
自定义异常类:
@WebFault(faultBean = "com.mysite.FaultBean")
public class MyCustomException extends Exception {
private FaultBean faultInfo;
//Getters/Setters/Constructors...
}
自定义故障Bean:
public class FaultBean {
private String message;
private List<String> messages;
//Getters/Setters/Constructors...
}
然后我从我的Web服务端点中的方法中抛出MyCustomException
。当我调用我的一个Web服务方法并抛出异常时,客户端将获得SOAPFaultException
而不是MyCustomException
。为什么不使用自定义异常?
答案 0 :(得分:1)
因此,经过一些调查后发现,由于SOAPFaultException
并非来自我认为的地方而引发的异常。它们实际上并没有被抛到MyCustomException
。因此,为了解决所有这些问题,我利用了Spring AOP并创建了一个Around方面来将我的所有调用包装到Web服务实现层。
在这方面,我捕获任何抛出的异常,并在重新抛出之前将其包装在MyCustomException
中。然后我的客户可以正确处理异常。