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中的异常。但是我的问题现在已经解决了。