1

我有一个正在开发的基于 JAX-WS 的应用程序。我使用从服务器生成 WSDL wsgen,然后使用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...
}

MyCustomException然后,我从我的 Web 服务端点中的方法中抛出。当我调用我的一个 Web 服务方法并引发异常时,客户端得到的是一个SOAPFaultException而不是MyCustomException. 为什么没有使用自定义异常?

4

1 回答 1

1

因此,经过一番调查,事实证明被抛出的异常SOAPFaultException并非来自我认为的地方。他们实际上并没有被抛出MyCustomException。因此,为了解决所有情况,我利用了 Spring AOP 并创建了一个 Around 方面来包装我对 Web 服务实现层的所有调用。

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

于 2012-09-27T12:06:22.000 回答