2015-05-29 49 views
8

ben aşağıdaki gibi tüm durumları işleme için bir sınıf yarattı Bahar 4.1.6 ile bir uygulamayı tanımlanmayan bir özel ile @ExceptionHandler çağırmak için başarısız oldualma hatası bile @ControllerAdvice

ERROR o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: 
    public org.springframework.http.ResponseEntity<com.foo.Result> 
    com.foo.RestControllerAdvice.handleException(java.lang.Exception) 

bu herhangi bir düzeyde impeditive olmasa bile, ben bunun neden olduğunu öğrenmek isteriz: aşağıdaki belirten bir ek hata iletisi söz konusu istisna ile birlikte ben, istisnalar yakalayabilir. Lütfen biri bunu bana açıklayabilir mi?

Teşekkürler.

DÜZENLEME:

Tam LOG

18:11:43.690 [qtp1614440090-27] ERROR o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Failed to invoke @ExceptionHandler method: public org.springframework.http.ResponseEntity<com.foo.Result> com.foo.RestControllerAdvice.handleException(java.lang.Exception) 
org.eclipse.jetty.io.EofException: null 
     at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:192) ~[na:na] 
     at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:441) ~[na:na] 
     at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:337) ~[na:na] 
     at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:128) ~[na:na] 
     at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:646) ~[na:na] 
     at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:246) ~[na:na] 
     at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:208) ~[na:na] 
     at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:457) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:767) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:800) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:139) ~[na:na] 
     at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:132) ~[na:na] 
     at org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:234) ~[na:na] 
     at com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1037) ~[jackson-core-2.4.3.jar:2.4.3] 
     at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1889) ~[jackson-databind-2.4.3.jar:2.4.3] 
     at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:231) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:208) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:161) ~[spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor.handleReturnValue(HttpEntityMethodProcessor.java:146) ~[spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:71) ~[spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126) ~[spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:362) ~[spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:60) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:138) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:74) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.DispatcherServlet.processHandlerException(DispatcherServlet.java:1183) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1020) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) [servlet-api-3.1.jar:3.1.0] 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) [spring-webmvc-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [servlet-api-3.1.jar:3.1.0] 
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:800) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at com.foo.TokenAuthFilter.doFilter(TokenAuthFilter.java:66) [classes/:na] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.7.RELEASE.jar:3.2.7.RELEASE] 
     at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at com.foo.config.SimpleCORSFilter.doFilter(SimpleCORSFilter.java:22) [classes/:na] 
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577) [jetty-security-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1125) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) [jetty-servlet-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.Server.handle(Server.java:497) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:248) [jetty-server-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540) [jetty-io-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:620) [jetty-util-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:540) [jetty-util-9.2.4.v20141103.jar:9.2.4.v20141103] 
     at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71] 
Caused by: java.io.IOException: Broken pipe 
     at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) ~[na:1.7.0_71] 
     at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51) ~[na:1.7.0_71] 
     at sun.nio.ch.IOUtil.write(IOUtil.java:148) ~[na:1.7.0_71] 
     at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:524) ~[na:1.7.0_71] 
     at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:172) ~[na:na] 
     ... 84 common frames omitted 
+0

Lütfen DEBUG düzeyini günlüğe kaydetmeyi etkinleştirin ve bu hatayla ilgili olarak kaydedilen her şeyi postalayın: stacktrace, diğer iletiler, iç içe istisnalar vb. –

+0

Burada [is] (http://pastebin.com/ADwrHUPZ). Bu sinir bozucu "Kırık Boru" mesajından kurtulmaya çalışıyorum, bu yüzden önceki hatayı anlamaya çalışıyorum, böylece söz konusu istisnayı tüketebiliyorum. – dambros

+0

Hayır, metni macunbin içine almayı ve buraya kopyalamayı kastediyorum. Unutulmayan bağlantıları takip etmekten hoşlanmıyoruz. –

cevap

8

IOException: Broken pipe istemci bağlantıyı kapattı gösterir. Özel durumu başarıyla yakaladınız, ancak son satırdaki istemciye bir yanıt vermeye çalışıyorsunuz. Ben istisna işleyicisi aşağıdaki düzgün idare başardınız:

@ExceptionHandler(IOException.class) 
@ResponseStatus(HttpStatus.SERVICE_UNAVAILABLE) 
public Object exceptionHandler(IOException e) { 
    if (StringUtils.containsIgnoreCase(ExceptionUtils.getRootCauseMessage(e), "Broken pipe")) { 
     return null;  //socket is closed, cannot return any response  
    } else { 
     return new HttpEntity<>(e.getMessage()); 
    } 
} 

ayrıntılı açıklama here olduğunu.

İlgili konular