Search in sources :

Example 6 with OpenApiHttpSessionBean

use of com.z.gateway.protocol.OpenApiHttpSessionBean in project gateway-dubbox by zhuzhong.

the class OpenApiAcceptHandlerImpl method acceptRequest.

@Override
public void acceptRequest(HttpServletRequest request, HttpServletResponse response) {
    OpenApiHttpRequestBean reqBean = (OpenApiHttpRequestBean) request.getAttribute(CommonCodeConstants.REQ_BEAN_KEY);
    String traceId = idService.genInnerRequestId();
    reqBean.setTraceId(traceId);
    // 重新设置bean
    request.setAttribute(CommonCodeConstants.REQ_BEAN_KEY, reqBean);
    if (logger.isInfoEnabled()) {
        logger.info(String.format("requestId=%s request begin,reqeust=%s", traceId, JSON.toJSONString(reqBean)));
    }
    // 将当前请求放入线程池处理,若超过线程池最大处理数则抛出reach queue max deepth 异常
    addTask2Pool(response, new OpenApiHttpSessionBean(reqBean));
}
Also used : OpenApiHttpSessionBean(com.z.gateway.protocol.OpenApiHttpSessionBean) OpenApiHttpRequestBean(com.z.gateway.common.OpenApiHttpRequestBean)

Example 7 with OpenApiHttpSessionBean

use of com.z.gateway.protocol.OpenApiHttpSessionBean in project gateway-dubbox by zhuzhong.

the class OpenApiAcceptHandlerImpl method addTask2Pool.

private void addTask2Pool(HttpServletResponse response, OpenApiHttpSessionBean sessionBean) {
    long currentTime = System.currentTimeMillis();
    if (logger.isDebugEnabled()) {
        logger.debug(String.format("begin deal_sessionbean,current_time=%d,sessionbean=%s ", currentTime, sessionBean));
    }
    logger.info("added one task to thread pool");
    OpenApiHttpReqTask task = null;
    String operationType = sessionBean.getRequest().getOperationType();
    OpenApiHandlerExecuteTemplate handlerExecuteTemplate = applicationContext.getBean(operationType, OpenApiHandlerExecuteTemplate.class);
    task = new OpenApiHttpReqTask(sessionBean, handlerExecuteTemplate);
    /**
     * 走责任链,将相关的请求处理
     */
    OpenApiHttpSessionBean tmp = (OpenApiHttpSessionBean) poolHandler.addTask(task);
    // 写入响应
    OpenApiResponseUtils.writeRsp(response, tmp.getRequest());
    if (logger.isDebugEnabled()) {
        logger.debug(String.format("end deal_sessionbean,current_time=%d,elapase_time=%d milseconds,sessionbean=%s", System.currentTimeMillis(), (System.currentTimeMillis() - currentTime), tmp));
    }
}
Also used : OpenApiHandlerExecuteTemplate(com.z.gateway.handler.OpenApiHandlerExecuteTemplate) OpenApiHttpSessionBean(com.z.gateway.protocol.OpenApiHttpSessionBean) OpenApiHttpReqTask(com.z.gateway.protocol.OpenApiHttpReqTask)

Aggregations

OpenApiHttpSessionBean (com.z.gateway.protocol.OpenApiHttpSessionBean)7 OpenApiHttpRequestBean (com.z.gateway.common.OpenApiHttpRequestBean)5 OpenApiContext (com.z.gateway.protocol.OpenApiContext)4 OpenApiHandlerExecuteTemplate (com.z.gateway.handler.OpenApiHandlerExecuteTemplate)2 OpenApiException (com.z.gateway.common.exception.OpenApiException)1 OpenApiRouteBean (com.z.gateway.core.OpenApiRouteBean)1 OpenApiHttpReqTask (com.z.gateway.protocol.OpenApiHttpReqTask)1 FutureTask (java.util.concurrent.FutureTask)1 AsyncContext (javax.servlet.AsyncContext)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1 HttpServletResponse (javax.servlet.http.HttpServletResponse)1 BeansException (org.springframework.beans.BeansException)1 TaskRejectedException (org.springframework.core.task.TaskRejectedException)1