Je crée un service web en utilisant le ressort. Je reçois une exception d'hibernation en essayant de sauvegarder la requête. J'essaye d'attraper l'exception d'hibernation dans le bloc catch mais le contrôle ne vient même pas au bloc catch et le service soap revient avec le message d'erreur soap soap. Voici la liste des classes que j'utilise, Pourrait-on s'il vous plaît laissez-moi savoir comment gérer l'exception et relancez l'exception.Spring Soap Webservice gestion des exceptions
@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;
}
}
Ma classe de base
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;
}
}
Ma couche d'affaires classe d'implémentation
@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;
}
Ce code retour message d'erreur de savon par défaut au client. Je veux attraper l'exception et modifier l'exception avant de retourner au client. S'il vous plaît laissez-moi savoir quel changement je dois faire pour que je puisse gérer le message d'erreur de savon avant de renvoyer la réponse au client.