浏览代码

统一网关错误返回修改

huangzhiyong 8 年之前
父节点
当前提交
2b4a6cf9c8

+ 1 - 1
hos-broker/src/main/resources/application.yml

@ -85,7 +85,7 @@ eureka:
    serviceUrl:
      defaultZone: http://192.168.1.221:8761/eureka/
log:
  path: /usr/local/logs/logback/broker
  path: /usr/local/esb/logs/logback/broker
  level: info
hos:
  filesystem:

+ 2 - 2
hos-broker/src/main/resources/logback-spring.xml

@ -6,7 +6,7 @@
    <springProperty scope="context" name="logLevel" source="log.level"/>
    <springProperty scope="context" name="LOG_HOME" source="log.path"/>
    <springProperty scope="context" name="ACTIVE_MQ_URL" source="spring.active.broker-url"/>
    <!--<springProperty scope="context" name="ACTIVE_MQ_URL" source="log.mqUrl"/>-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
@ -38,7 +38,7 @@
        <InitialContextFactoryName>
            org.apache.activemq.jndi.ActiveMQInitialContextFactory
        </InitialContextFactoryName>
        <ProviderURL>${ACTIVE_MQ_URL}</ProviderURL>
        <ProviderURL>tcp://172.19.103.42:61616</ProviderURL>
        <userName>admin</userName>
        <password>admin</password>
        <TopicConnectionFactoryBindingName>ConnectionFactory</TopicConnectionFactoryBindingName>

+ 8 - 6
hos-camel2/src/main/java/camel/gateway/processor/ErrorHandle.java

@ -1,5 +1,6 @@
package camel.gateway.processor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.Exchange;
import org.springframework.stereotype.Component;
@ -9,28 +10,29 @@ import org.springframework.stereotype.Component;
 */
@Component("errorHandle")
public class ErrorHandle {
    private ObjectMapper objectMapper =new ObjectMapper();
    public void paramError(Exchange exchange) {
        exchange.getOut().setHeader("errorCode","{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"paramError!\",\"errorCode\":0}");
        exchange.getOut().setBody("paramError");
        exchange.getOut().setBody("{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"paramError!\",\"errorCode\":0}");
    }
    public void outdataError(Exchange exchange) {
        exchange.getOut().setHeader("errorCode","{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"outdataError!\",\"errorCode\":0}");
        exchange.getOut().setBody("outdataError");
    public void outdateError(Exchange exchange) {
        exchange.getOut().setHeader("errorCode","{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"outdateError!\",\"errorCode\":0}");
        exchange.getOut().setBody("{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"outdateError!\",\"errorCode\":0}");
    }
    public void signValidError(Exchange exchange) {
        exchange.getOut().setHeader("errorCode","{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"signValidError!\",\"errorCode\":0}");
        exchange.getOut().setBody("signValidError");
        exchange.getOut().setBody("{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"signValidError!\",\"errorCode\":0}");
    }
    public void unauthorizedError(Exchange exchange) {
        exchange.getOut().setHeader("errorCode","{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"unauthorizedError!\",\"errorCode\":0}");
        exchange.getOut().setBody("unauthorizedError");
        exchange.getOut().setBody("{\"successFlg\":false,\"pageSize\":10,\"currPage\":0,\"totalPage\":0,\"totalCount\":0,\"detailModelList\":null,\"obj\":null,\"errorMsg\":\"unauthorizedError!\",\"errorCode\":0}");
    }

+ 14 - 7
hos-camel2/src/main/java/camel/gateway/processor/GatewayProcessor.java

@ -46,36 +46,42 @@ public class GatewayProcessor implements Processor {
//        body = URLDecoder.decode(body, "UTF-8");
        Map<String, Object> params = exchange.getIn().getHeaders();
        if (params.get("appKey") == null) {
            return "jetty:http://0.0.0.0:9999/error/paramError";    //TODO:
            exchange.getOut().setHeader(Exchange.HTTP_URI,"paramError");
            return "direct:errorHandle";    //TODO:
        }
        String appKey = params.get("appKey").toString();
        String secret = getSecret(appKey);
        if (secret.equals("")) {
            return "jetty:http://0.0.0.0:9999/error/paramError";    //TODO:
            exchange.getOut().setHeader(Exchange.HTTP_URI,"paramError");
            return "direct:errorHandle";    //TODO:
        }
        boolean pass = checkParams(params);
        if (!pass) {
            return "jetty:http://0.0.0.0:9999/error/paramError";    //TODO:
            exchange.getOut().setHeader(Exchange.HTTP_URI,"paramError");
            return "direct:errorHandle";    //TODO:
        }
        pass = checkTimeStamp(params);
        if (!pass) {
            return "jetty:http://0.0.0.0:9999/error/outdataError";    //TODO:
            exchange.getOut().setHeader(Exchange.HTTP_URI,"outdateError");
            return "direct:errorHandle";    //TODO:
        }
        //获取secret接口,不做sign验证
        if (!"admin.apps.get".equals(params.get("api"))) {
            pass = checkSign(params, secret);
            if (!pass) {
                return "jetty:http://0.0.0.0:9999/error/signValidError";    //TODO:
                exchange.getOut().setHeader(Exchange.HTTP_URI,"signValidError");
                return "direct:errorHandle";    //TODO:
            }
        }
        pass = checkAuthorized(params);
        if (!pass) {
            return "jetty:http://0.0.0.0:9999/error/unauthorizedError";    //TODO:
            exchange.getOut().setHeader(Exchange.HTTP_URI,"unauthorizedError");
            return "direct:errorHandle";    //TODO:
        }
        return genEndpoint(params, exchange);
@ -180,7 +186,8 @@ public class GatewayProcessor implements Processor {
            methodMap.put("3", "put");
            JsonNode jsonNode = objectMapper.readValue(param, JsonNode.class);
            String url = serviceUrl(appApi.getMicroServiceName());
//            String url = serviceUrl(appApi.getMicroServiceName());
            String url = brokerUrl;
            if (StringUtil.isEmpty(url)) {
                return "";
            }

+ 17 - 8
hos-camel2/src/main/java/camel/gateway/route/GatewayRouterBuilder.java

@ -3,7 +3,6 @@ package camel.gateway.route;
import camel.gateway.processor.ErrorHandle;
import camel.gateway.processor.GatewayProcessor;
import camel.gateway.processor.SignProcessor;
import camel.gateway.processor.WsProcessor;
import camel.log.TracerFormatter;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
@ -50,25 +49,35 @@ public class GatewayRouterBuilder extends RouteBuilder {
                .process(new GatewayProcessor())
                .routingSlip(method(GatewayProcessor.class, "route"));
        from("jetty:http://0.0.0.0:9999/error/{error}")
        from("direct:errorHandle")
                .choice()
                .when(header(Exchange.HTTP_URI).contains("paramError")).bean(new ErrorHandle(), "paramError")
                .when(header(Exchange.HTTP_URI).contains("outdataError")).bean(new ErrorHandle(), "outdataError")
                .when(header(Exchange.HTTP_URI).contains("outdateError")).bean(new ErrorHandle(), "outdateError")
                .when(header(Exchange.HTTP_URI).contains("signValidError")).bean(new ErrorHandle(), "signValidError")
                .when(header(Exchange.HTTP_URI).contains("unauthorizedError")).bean(new ErrorHandle(), "unauthorizedError")
                .endChoice();
//
//        from("jetty:http://0.0.0.0:9996/error/{error}")
//                .choice()
//                .when(header(Exchange.HTTP_URI).contains("paramError")).bean(new ErrorHandle(), "paramError")
//                .when(header(Exchange.HTTP_URI).contains("outdateError")).bean(new ErrorHandle(), "outdateError")
//                .when(header(Exchange.HTTP_URI).contains("signValidError")).bean(new ErrorHandle(), "signValidError")
//                .when(header(Exchange.HTTP_URI).contains("unauthorizedError")).bean(new ErrorHandle(), "unauthorizedError")
//                .endChoice();
        from("jetty:http://0.0.0.0:9999/healthy").routeId("healthy")
                .log("=========================心跳测试=====================");
        from("jetty:http://0.0.0.0:9999/sign").routeId("sign")
                .process(new SignProcessor());
        from(SIMPLE_ENDPOINT_URI)
                .setHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, constant(true))
                .process(new WsProcessor())
                .routingSlip(method(GatewayProcessor.class, "route"))
        .to("bean:wsProcessor?method=responseWs")
//        from(SIMPLE_ENDPOINT_URI)
//                .setHeader(Exchange.BEAN_MULTI_PARAMETER_ARRAY, constant(true))
//                .process(new WsProcessor())
//                .routingSlip(method(GatewayProcessor.class, "route"))
//        .to("bean:wsProcessor?method=responseWs")
        ;
    }