2012-12-18 9 views
6

Sto usando RestEasy per creare i miei servizi Web restful. Ho implementato ExceptionMappers per preparare specifiche risposte alle eccezioni.RestEasy Post Process Interceptor catena non attraversata quando risposta creata da ExceptionMapper

Ho implementato anche MessageBodyWriterInterceptors e un paio di PostProcessorInterceptor.

Edizione: Tutto funziona correttamente quando qualsiasi risorsa non genera eccezioni. La mia implementazione funziona come previsto. Vengono chiamati tutti gli intercettori post processore e gli intercettori del corpo del messaggio.

Ma quando viene lanciata un'eccezione da uno qualsiasi dei metodi di risorsa, vengono chiamati gli ExceptionMappers registrati e sta creando la risposta. Ma in questo caso la catena interceptor del post processore non viene attraversata. Non vengono chiamati.

Cosa devo fare in questo caso. Scrivi quella logica interceptor nel mio mapping delle eccezioni o è disponibile una soluzione?

risposta

11

I processori di post non vengono richiamati se viene generata un'eccezione. Sono in diversi percorsi risoluzione paralleli,:

 
     /'Normal' JAX-RS response -> Post Processors -> Message Body Writers 
Processing 
      \ Exception -> Exception Mappers 

Se si dispone di logica che deve essere eseguito in entrambi i tuoi post processor e mapper eccezione allora si avrà bisogno di incorporarli in entrambi (preferibilmente tramite un comune, classe di utilità).

+0

Grazie per la risposta. Implementerà la logica utilizzando una classe di utilità comune – Bhaskar

+0

Nessun problema. Sentiti libero di accettare la mia risposta se ti ha aiutato. E buona fortuna con il resto del progetto. – Perception

Problemi correlati