use of com.z.gateway.handler.OpenApiHandlerExecuteTemplate in project gateway-dubbox by zhuzhong.
the class AsynOpenApiAcceptHandlerImpl method acceptRequest.
@Override
public void acceptRequest(HttpServletRequest request, HttpServletResponse response) {
final AsyncContext context = request.startAsync(request, response);
taskExecutor.submit(new Runnable() {
@Override
public void run() {
try {
HttpServletRequest asynRequest = (HttpServletRequest) context.getRequest();
OpenApiHttpRequestBean reqBean = (OpenApiHttpRequestBean) asynRequest.getAttribute(CommonCodeConstants.REQ_BEAN_KEY);
String traceId = idService.genInnerRequestId();
reqBean.setTraceId(traceId);
// 重新设置bean
asynRequest.setAttribute(CommonCodeConstants.REQ_BEAN_KEY, reqBean);
if (logger.isInfoEnabled()) {
logger.info(String.format("requestId=%s request begin,reqeust=%s", traceId, JSON.toJSONString(reqBean)));
}
OpenApiHttpSessionBean sessionBean = new OpenApiHttpSessionBean(reqBean);
String operationType = sessionBean.getRequest().getOperationType();
OpenApiHandlerExecuteTemplate handlerExecuteTemplate = applicationContext.getBean(operationType, OpenApiHandlerExecuteTemplate.class);
OpenApiContext openApiContext = new OpenApiContext();
openApiContext.setOpenApiHttpSessionBean(sessionBean);
try {
handlerExecuteTemplate.execute(openApiContext);
} catch (Exception e) {
e.printStackTrace();
}
// 写入响应
OpenApiResponseUtils.writeRsp((HttpServletResponse) context.getResponse(), sessionBean.getRequest());
} finally {
context.complete();
}
}
});
}
use of com.z.gateway.handler.OpenApiHandlerExecuteTemplate 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));
}
}
Aggregations