2017-08-31 1 views
0

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.

Répondre

0

Je suis capable d'attraper l'exception dans SubmitService mais je ne sais pas pourquoi ne pas pouvoir attraper l'exception dans ValidateImpl. Cependant, mon problème est résolu maintenant.