Tôi đang sử dụng SimpleMappingExceptionResolver gửi tất cả các ngoại lệ đến một chế độ xem được hiển thị độc đáo. Nó hoạt động ngoại trừ một trường hợp: Nếu người dùng yêu cầu một trang và sau đó gửi và "Hủy bỏ" (Tôi không biết chính xác cách hoạt động, nhưng tôi nhận thấy rằng nếu tôi nhấp vào nút gửi biểu mẫu bài đăng HTTP rất nhanh và thường xuyên Firefox 7 bằng cách nào đó thông báo cho máy chủ rằng nó không còn quan tâm đến kết quả.) Sau đó, Tomcat 6 tăng ClientAbortException
khi một cố gắng hiển thị trang hoặc viết câu trả lời http dưới bất kỳ hình thức nào.Làm cách nào để loại trừ ClientAbortException khỏi SimpleMappingExceptionResolver
Bây giờ, hãy bắt đầu sự cố: SimpleMappingExceptionResolver
"bắt" ngoại lệ và truy xuất để hiển thị số độc đáo thành trang html. Điều này sau đó gây ra trong một ngoại lệ Stream đã đóng mà gây ô nhiễm tệp nhật ký. (java.lang.IllegalStateException: getOutputStream() has already been called for this response
)
Những gì tôi đã làm như vậy, là đăng ký một trang jsp trống cho "ClientAbortException". Nhưng tôi cảm thấy rằng đây là một Hack. Mặt khác, tôi đoán đây không phải là một vấn đề không phổ biến, bởi vì tôi sẽ mong đợi nó trong gần như mọi ứng dụng mùa xuân mà ám chỉ tất cả ngoại lệ. Vì vậy, không ai có kinh nghiệm với vấn đề đó, hoặc có một ý tưởng về một giải pháp không nên 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>
Đối với tôi, tính năng này không hoạt động. Phương thức này không bao giờ được gọi khi chạy trong tomcat ... – membersound