无法从故障消息解析器中抛出 CustomException
Unable to throw CustomException from fault-Message Resolver
我在 Spring 集成网关流程中使用两个 Web 服务出站网关调用 2 个不同的 Web 服务。
我在每个网关中实施了 2 个故障解决程序来解决 SOAP 故障
并想创建自定义应用程序异常并从解析器抛出到我的异常处理程序。
每当我们从服务调用中收到 SOAP 错误时,我的 FaultResolver 就会被调用。
但是我无法从我的解析器中抛出自定义异常,因为它只允许我抛出 IOException。
因此,我抛出了一个运行时异常以及来自我的解析器的消息,并在我的异常处理程序中捕获了这个运行时异常。
抛出运行时异常并在 Handler 中捕获是否是正确的做法,或者是否有任何其他更好的方法来处理这种情况或任何其他实现来处理 SOAP 错误并抛出自定义异常。
确定您的解决方案好坏的最好方法是尝试找到一些现成的实现。其中之一是:
public class SimpleFaultMessageResolver implements FaultMessageResolver {
public void resolveFault(WebServiceMessage message) {
if (message instanceof FaultAwareWebServiceMessage) {
throw new WebServiceFaultException((FaultAwareWebServiceMessage) message);
}
else {
throw new WebServiceFaultException("Message has unknown fault: " + message);
}
}
}
其中 WebServiceFaultException
正好是 RuntimeException
。
那么,我认为你可以继续了。
我在 Spring 集成网关流程中使用两个 Web 服务出站网关调用 2 个不同的 Web 服务。 我在每个网关中实施了 2 个故障解决程序来解决 SOAP 故障 并想创建自定义应用程序异常并从解析器抛出到我的异常处理程序。
每当我们从服务调用中收到 SOAP 错误时,我的 FaultResolver 就会被调用。 但是我无法从我的解析器中抛出自定义异常,因为它只允许我抛出 IOException。
因此,我抛出了一个运行时异常以及来自我的解析器的消息,并在我的异常处理程序中捕获了这个运行时异常。 抛出运行时异常并在 Handler 中捕获是否是正确的做法,或者是否有任何其他更好的方法来处理这种情况或任何其他实现来处理 SOAP 错误并抛出自定义异常。
确定您的解决方案好坏的最好方法是尝试找到一些现成的实现。其中之一是:
public class SimpleFaultMessageResolver implements FaultMessageResolver {
public void resolveFault(WebServiceMessage message) {
if (message instanceof FaultAwareWebServiceMessage) {
throw new WebServiceFaultException((FaultAwareWebServiceMessage) message);
}
else {
throw new WebServiceFaultException("Message has unknown fault: " + message);
}
}
}
其中 WebServiceFaultException
正好是 RuntimeException
。
那么,我认为你可以继续了。