Sto usando un SimpleMappingExceptionResolver che invia tutte le eccezioni a una vista in cui è ben rappresentato. Funziona tranne un caso: Se l'utente richiede una pagina e quindi invia e "Abort" (non so esattamente come funziona, ma ho notato che se faccio clic su un modulo di invio del modulo HTTP invio molto veloce e spesso il Firefox 7 in qualche modo notifica al server che non è più interessato al risultato:) Quindi il Tomcat 6 sale a ClientAbortException
quando si tenta di eseguire il rendering della pagina o si scrive la risposta http in qualsiasi tipo.Come escludere ClientAbortException da SimpleMappingExceptionResolver
Ora iniziano i problemi: i SimpleMappingExceptionResolver
"catture" l'eccezione e trys per renderlo ben ad una pagina html. Ciò provoca quindi un'eccezione Stream già chiusa che inquina il file di registro. (java.lang.IllegalStateException: getOutputStream() has already been called for this response
)
Quello che ho fatto in questo modo, è registrare una pagina jsp vuota per "ClientAbortException". Ma sento che questo è un Hack. D'altra parte credo che questo non sia un problema così poco comune, perché lo aspetterò in quasi tutte le applicazioni di primavera che rendono tutte le eccezioni. Quindi qualcuno ha esperienza con quel problema o ha un'idea di una soluzione non così hacky?
<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"
p:defaultErrorView="uncaughtException">
<property name="exceptionMappings">
<props>
<prop key=".MissingServletRequestParameterException">
resourceNotFound
</prop>
<prop key=".ClientAbortException">nothing</prop>
</props>
</property>
</bean>
Per me questo non funziona. Il metodo non viene mai richiamato durante l'esecuzione in tomcat ... – membersound