title: Jhipster Gateway empty response with code 200 when throwing com.netflix.zuul.exception.ZuulException: Forwarding error
body: <p>Using a microservice architecture sometimes I found communication errors between the gateway and the microservice, causing exceptions in the gateway like these:</p>
  
  <pre><code>com.netflix.zuul.exception.ZuulException: Forwarding error
      at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:15
  ....
  Caused by: com.netflix.client.ClientException: null
      at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:123)
      at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:81)
      at org.springframework.cloud.netflix.zuul.filters.route.RestClientRibbonCommand.forward(RestClientRibbonCommand.java:135)
  ....
  Caused by: java.net.URISyntaxException: Illegal character in query at index 69: http://192.168.4.25:8081/api/almacen/docs/1/metadata?metadatos=%5B%7B"clave":"cmis:name","valor":"documento.txt"%7D,%7B"clave":"cmis:lastModifiedBy","valor":"swagger"%7D%5D
      at java.net.URI$Parser.fail(URI.java:2848)
      at java.net.URI$Parser.checkChars(URI.java:3021)
  
  
  
  com.netflix.zuul.exception.ZuulException: Forwarding error
      at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.handleException(RibbonRoutingFilter.java:158)
      at org.springframework.cloud.netflix.zuul.filters.route.RibbonRoutingFilter.forward(RibbonRoutingFilter.java:133)
  ...
  Caused by: com.netflix.client.ClientException: null
      at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:123)
      at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:81)
  ...
  Caused by: java.net.SocketTimeoutException: Read timed out
      at java.net.SocketInputStream.socketRead0(Native Method)
      at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
  </code></pre>
  
  <p>The problem is that the response from the gateway is 200 (OK) and empty content. I would like to have an error code, as I can see the error happens at the JWTFilter, when invoking the doFilter</p>
  
  <pre><code>@Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
      throws IOException, ServletException {
      try {
          HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
          String jwt = resolveToken(httpServletRequest);
          if (StringUtils.hasText(jwt)) {
              if (this.tokenProvider.validateToken(jwt)) {
                  Authentication authentication = this.tokenProvider.getAuthentication(jwt);
                  SecurityContextHolder.getContext().setAuthentication(authentication);
              }
          }
          filterChain.doFilter(servletRequest, servletResponse);
      } catch (ExpiredJwtException eje) {
          log.info("Security exception for user {} - {}", eje.getClaims().getSubject(), eje.getMessage());
          ((HttpServletResponse) servletResponse).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
      }
  }
  </code></pre>
  
  <p>I try to catch the exception, even creating other filter that wraps the JWFilter, but I wasn't able to catch the error.</p>
  
  <p>Is there any way to improve the code to get an error code instead a 200?</p>
  
  <p>Thanks in advance</p>