Java 如何在Spring应用程序中处理SockJsMessageDeliveryException?
在我的应用程序日志中,我得到:Java 如何在Spring应用程序中处理SockJsMessageDeliveryException?,java,spring,websocket,Java,Spring,Websocket,在我的应用程序日志中,我得到: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.socket.sockjs.SockJsException: Uncaught failure in SockJS request, uri=*
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.socket.sockjs.SockJsException: Uncaught failure in SockJS request, uri=****; nested exception is org.springframework.web.socket.sockjs.SockJsMessageDeliveryException: Failed to deliver message(s)
我尝试创建自定义处理程序:
@MessageExceptionHandler({SockJsMessageDeliveryException.class})
public void handle(SockJsMessageDeliveryException e) {
log.error("Handled websocket exception: " + e.getClass().getSimpleName());
}
但它没有抓住这个例外。
我还试图覆盖SimpMessageTemplate
public class SilentErrorSimpMessagingTemplate extends SimpMessagingTemplate {
private final SimpMessagingTemplate simpMessagingTemplate;
SilentErrorSimpMessagingTemplate(SimpMessagingTemplate simpMessagingTemplate) {
super(simpMessagingTemplate.getMessageChannel());
simpMessagingTemplate.setMessageConverter(new MappingJackson2MessageConverter());
this.simpMessagingTemplate = simpMessagingTemplate;
}
@Override
public void convertAndSendToUser(@NotNull String user, @NotNull String destination, @NotNull Object payload) throws MessagingException {
try {
simpMessagingTemplate.convertAndSendToUser(user, destination, payload);
} catch (SockJsMessageDeliveryException e) {
log.error("Socket send error: " + e.getClass().getSimpleName());
}
}
}
我想在websocket会话关闭时处理此错误,以不触发我的监视警报。有什么想法吗