JAX-WS客户端抛出SOAPFaultException而不是自定义异常

时间:2012-09-26 20:32:57

标签: java jax-ws

我正在开发一个基于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。为什么不使用自定义异常?

1 个答案:

答案 0 :(得分:1)

因此,经过一些调查后发现,由于SOAPFaultException并非来自我认为的地方而引发的异常。它们实际上并没有被抛到MyCustomException。因此,为了解决所有这些问题,我利用了Spring AOP并创建了一个Around方面来将我的所有调用包装到Web服务实现层。

在这方面,我捕获任何抛出的异常,并在重新抛出之前将其包装在MyCustomException中。然后我的客户可以正确处理异常。