Spring soap Webservice异常处理

问题描述:

我使用spring创建soap web服务。我在尝试保存请求时遇到了休眠异常。 我试图捕捉catch块中的休眠异常,但控制不甚至来到catch块 和肥皂服务返回与肥皂故障错误消息。以下是我正在使用的课程列表, 任何人都可以让我知道如何处理异常并重新抛出异常。Spring soap Webservice异常处理

@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错误消息回客户端。 我想捕捉异常并在返回客户端之前修改异常。请让我知道我必须做出什么更改,以便我可以在将响应返回给客户端之前处理肥皂错误消息。

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