Forráskód Böngészése

修改zuulException处理

xusonglin 3 éve
szülő
commit
ce37560e38

+ 10 - 3
src/main/java/com/jkcredit/zuul/error/ErrorFilter.java

@@ -1,7 +1,9 @@
 package com.jkcredit.zuul.error;
 
+import com.alibaba.fastjson.JSON;
 import com.jkcredit.common.model.ResultObject;
 import com.netflix.zuul.ZuulFilter;
+import com.netflix.zuul.context.RequestContext;
 import com.netflix.zuul.exception.ZuulException;
 import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
 import org.springframework.stereotype.Component;
@@ -33,14 +35,19 @@ public class ErrorFilter extends ZuulFilter {
     }
 
     @Override
-    public Object run() throws ZuulException {
+    public Object run(){
+        Object e = RequestContext.getCurrentContext().getThrowable();
+        if (e != null && e instanceof ZuulException) {
+            RequestContext.getCurrentContext().remove("throwable");
+        }
         String requestId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())
                 + UUID.randomUUID().toString();
         ResultObject resultObject = new ResultObject();
         resultObject.setCode(500);
-        resultObject.setMessage("查询异常");
+        resultObject.setMessage("failed");
         resultObject.setRequestId(requestId);
         resultObject.setResult(new ArrayList<>());
-        return null;
+        RequestContext.getCurrentContext().setResponseBody(JSON.toJSONString(resultObject));
+        return resultObject;
     }
 }

+ 24 - 7
src/main/java/com/jkcredit/zuul/error/PostErrorFilter.java

@@ -1,11 +1,19 @@
 package com.jkcredit.zuul.error;
 
+import com.alibaba.fastjson.JSON;
+import com.jkcredit.common.model.ResultObject;
 import com.netflix.zuul.ZuulFilter;
 import com.netflix.zuul.context.RequestContext;
+import com.netflix.zuul.exception.ZuulException;
 import org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter;
 import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
 import org.springframework.stereotype.Component;
 
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.UUID;
+
 /**
  * @author xusonglin
  * @version V1.0
@@ -14,26 +22,35 @@ import org.springframework.stereotype.Component;
 public class PostErrorFilter extends SendErrorFilter {
     @Override
     public String filterType() {
-        return FilterConstants.ERROR_TYPE;
+        return FilterConstants.POST_TYPE;
     }
 
     @Override
     public int filterOrder() {
-        return super.filterOrder();
+        return 10;
     }
 
     @Override
     public boolean shouldFilter() {
         RequestContext context = RequestContext.getCurrentContext();
         ZuulFilter filter = (ZuulFilter) context.get("failed.filter");
-        return (filter != null && filter.filterType().equals("post"));
+        return RequestContext.getCurrentContext().getResponseStatusCode() != 200;
     }
 
     @Override
     public Object run() {
-        RequestContext requestContext = RequestContext.getCurrentContext();
-        RequestContext.getCurrentContext().setResponseStatusCode(500);
-        Throwable throwable = requestContext.getThrowable();
-        return super.run();
+        Object e = RequestContext.getCurrentContext().getThrowable();
+        if (e != null && e instanceof ZuulException) {
+            RequestContext.getCurrentContext().remove("throwable");
+        }
+        String requestId = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())
+                + UUID.randomUUID().toString();
+        ResultObject resultObject = new ResultObject();
+        resultObject.setCode(500);
+        resultObject.setMessage("failed");
+        resultObject.setRequestId(requestId);
+        resultObject.setResult(new ArrayList<>());
+        RequestContext.getCurrentContext().setResponseBody(JSON.toJSONString(resultObject));
+        return resultObject;
     }
 }

+ 1 - 1
src/main/java/com/jkcredit/zuul/handler/GlobalExceptionHandler.java

@@ -27,7 +27,7 @@ public class GlobalExceptionHandler {
                 + UUID.randomUUID().toString();
         ResultObject resultObject = new ResultObject();
         resultObject.setCode(500);
-        resultObject.setMessage("查询异常");
+        resultObject.setMessage("failed");
         resultObject.setRequestId(requestId);
         resultObject.setResult(new ArrayList<>());
         log.error("requestId:{}, exception:{}", requestId, ex.getMessage());

+ 10 - 5
src/main/java/com/jkcredit/zuul/post/EnvelopedResponseFilter.java

@@ -35,11 +35,16 @@ public class EnvelopedResponseFilter extends ZuulFilter {
 
     @Override
     public Object run() throws ZuulException {
-        String response = RequestContext.getCurrentContext().getResponseBody();
-        ResultObject resultObject = JSON.toJavaObject(JSON.parseObject(response),
-                ResultObject.class);
-        RequestContext.getCurrentContext().setResponseBody(JSON.toJSONString(resultObject));
-        log.info("requestId:{}, response:{}", resultObject.getRequestId(), JSON.toJSONString(resultObject));
+        try {
+            String response = RequestContext.getCurrentContext().getResponseBody();
+            ResultObject resultObject = JSON.toJavaObject(JSON.parseObject(response),
+                    ResultObject.class);
+            RequestContext.getCurrentContext().setResponseBody(JSON.toJSONString(resultObject));
+            log.info("requestId:{}, response:{}", resultObject.getRequestId(), JSON.toJSONString(resultObject));
+        } catch (Exception e) {
+            log.error("EnvelopedResponseFilter:", e);
+        }
+
         return null;
     }
 }

+ 3 - 2
src/main/java/com/jkcredit/zuul/task/CheckClientNetworkTask.java

@@ -37,7 +37,8 @@ public class CheckClientNetworkTask {
     public void checkClientNetwork() {
         Set<String> disableHosts = stringRedisTemplate.boundSetOps("DISABLED_HOST").members();
         for (String host : disableHosts) {
-            String url = "http://" + host + "/loadCookie";
+            String url = "http://" + host + "/getNewCookie";
+            log.info("checkClientNetwork.url:{}", url);
             ResponseEntity<CommonResponseObject> responseEntity = restTemplate
                     .postForEntity(url, null, CommonResponseObject.class);
             CommonResponseObject responseObject = responseEntity.getBody();
@@ -56,7 +57,7 @@ public class CheckClientNetworkTask {
                     e.printStackTrace();
                 }
             } else {
-                log.info("");
+                log.info("getNewCookieFailed:{}", host);
             }
         }
     }