2017-06-15 5 views
0

私はこのページに例外をリダイレクトできるようにzuulサーバーの標準エラーページを作成しようとしていますか?zuulのスタンドエラーページを作成する[バージョン1.1.2]

現在、私は以下のようにzuul例外をキャッチするzuulフィルタを作成しました:

コードスニペット

@Override 
    public Object run() { 
     try { 
      RequestContext ctx = RequestContext.getCurrentContext(); 
      Object e = ctx.get("error.exception"); 

      if (e != null && e instanceof ZuulException) { 
       ZuulException zuulException = (ZuulException)e; 
       LOG.error("Zuul failure detected: " + zuulException.getMessage(), zuulException); 

       // Remove error code to prevent further error handling in follow up filters 
       ctx.remove("error.status_code"); 

       // Populate context with new response values 
       ctx.setResponseBody("Internal Server Error : Please contact Phoenix Admin"); 
       ctx.getResponse().setContentType("application/json"); 
       ctx.setResponseStatusCode(500); //Can set any error code as excepted 
      } 
     } 
     catch (Exception ex) { 
      LOG.error("Exception filtering in custom error filter", ex); 
      ReflectionUtils.rethrowRuntimeException(ex); 
     } 
     return null; 
    } 

はどんなアドバイスを感謝?

+0

コンテンツタイプをtext/htmlに変更すると、jsonではなくページがスローされます。それはあなたが探しているものですか?または実際のページをスローしたい場合。 –

+0

私は、レスポンスボディに直接ハードコードするのではなく、エラーページからコンテンツを読み込む必要があると考えています。私は、ファイルからコンテンツを読み込み、レスポンスボディに読み込むコードを書くことを考えています。 @GrinishNepalに点を付ける良い方法 – Joey

答えて

0

私は今旅行中のエラーページからどのように読むことができるかを見なければなりません。しかし、コンテンツを読み込んでレスポンスボディを設定することは、間違いなく完璧ではない可能性があります。 以下のコードを参考にしてチェックしてください。

また、お試しになる可能性があるコードを追加して、簡単に答えて助けてください。 フィルタがプレデコレーションフィルタの後に実行されていることを確認する必要があります。詳細については、

@Override 
     public Object run() { 
      RequestContext ctx = RequestContext.getCurrentContext(); 
      HttpServletRequest request = ctx.getRequest(); 

     String url = UriComponentsBuilder.fromHttpUrl("http://localhost:8082").path("/outage").build() 
            .toUriString(); 
     ctx.set("requestURI", url); 
     return null; 
    } 

チェックこのアウト: - https://github.com/spring-cloud/spring-cloud-netflix/issues/1754

ホープこれはあなたを助けます。

関連する問題