【发布时间】: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