【问题标题】:Spring Soap Webservice exception handlingSpring Soap Webservice异常处理
【发布时间】:2017-08-31 18:16:17
【问题描述】:

我正在使用 spring 创建soap web 服务。尝试保存请求时出现休眠异常。 我试图在 catch 块中捕获休眠异常,但控制甚至不进入 catch 块 和soap 服务返回soap 错误错误消息。下面是我正在使用的类列表, 任何人都可以让我知道如何处理异常并重新抛出异常。

@WebService(serviceName = "submitService")
public class SubmitService extends AbstractWebServiceImpl {


    @Autowired
    private Validate validate;

    @WebMethod
    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
    public ResponseData submitRequest(RequestData request) {
            ResponseData response = validate.submitRequest(request);
            return response;

    }

}

我的基类

 public class AbstractWebServiceImpl extends SpringBeanAutowiringSupport {    
        @Resource
        private WebServiceContext webServiceContext;

        protected void handleWSException(Exception e) throws BusinessFault, InfrastructureFault {
            if ( e instanceof BusinessException) {
                ReturnMessage rm = ((BusinessException)e).getReturnMessage();
                throw new BusinessFault(rm, e);

            } else if (e instanceof BaseException) {
                ReturnMessage rm = ((BaseException)e).getReturnMessage();
                throw new InfrastructureFault(rm, e);

            } else {
                ReturnMessage rm = new ReturnMessage(ReturnCode.GENERIC_WEB_SERVICE_ERROR, e.toString());
                throw new InfrastructureFault(rm, e);
            }
        }

        public void setWebServiceContext(WebServiceContext webServiceContext) {
            this.webServiceContext = webServiceContext;
        }

        public WebServiceContext getWebServiceContext() {
            return webServiceContext;
        }

    }

我的业务层实现类

  @Component
    public class ValidateImpl implements Validate {


        @Autowired
        private SomeHibernateDao dao;

        @Override
        @Transactional
        public ResponseData submitRequest(RequestData request) {
            ResponseData response = new ResponseData();

             try {
                    dao.save(request);
                } catch (Exception e) {
                // Control never execute this block of code if dao layer throwing any exception.
                //  I want to catch the exception here modify the response and return to the client
                  e.printStackTrace(); 
                  response.setErrorDetails("More meaningful error message");
                }

            return response;
        }

此代码将默认的soap错误消息返回给客户端。 我想在返回客户端之前捕获异常并修改异常。请让我知道我必须进行哪些更改,以便在我将响应返回给客户端之前处理soap错误消息。

【问题讨论】:

    标签: java spring web-services soap exception-handling


    【解决方案1】:

    我能够在 SubmitService 本身中捕获异常,但不确定为什么无法在 ValidateImpl 中捕获异常。不过我的问题现在已经解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 2015-07-17
      • 2023-03-28
      • 2016-10-31
      相关资源
      最近更新 更多