public void handle()

in dubbo-rpc-extensions/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/handler/NettyHttpHandler.java [62:140]


    public void handle(NettyRequestFacade requestFacade, NettyHttpResponse nettyHttpResponse) throws IOException {

        // set remote address
        RpcContext.getServiceContext().setRemoteAddress(requestFacade.getRemoteAddr(), requestFacade.getRemotePort());

        // set local address
        RpcContext.getServiceContext().setLocalAddress(requestFacade.getLocalAddr(), requestFacade.getLocalPort());

        // set request
        RpcContext.getServiceContext().setRequest(requestFacade);

        // set response
        RpcContext.getServiceContext().setResponse(nettyHttpResponse);

        Object nettyHttpRequest = requestFacade.getRequest();

        RestFilterContext restFilterContext =
                new RestFilterContext(url, requestFacade, nettyHttpResponse, serviceDeployer);

        try {

            // first request filter
            executeFilters(restFilterContext, restRequestFilters);

        } catch (PathNoFoundException pathNoFoundException) {
            logger.error(
                    "",
                    pathNoFoundException.getMessage(),
                    "",
                    "dubbo rest protocol provider path   no found ,raw request is :" + nettyHttpRequest,
                    pathNoFoundException);
            nettyHttpResponse.sendError(404, pathNoFoundException.getMessage());
        } catch (ParamParseException paramParseException) {
            logger.error(
                    "",
                    paramParseException.getMessage(),
                    "",
                    "dubbo rest protocol provider param parse error ,and raw request is :" + nettyHttpRequest,
                    paramParseException);
            nettyHttpResponse.sendError(400, paramParseException.getMessage());
        } catch (MediaTypeUnSupportException contentTypeException) {
            logger.error(
                    "",
                    contentTypeException.getMessage(),
                    "",
                    "dubbo rest protocol provider content-type un support" + nettyHttpRequest,
                    contentTypeException);
            nettyHttpResponse.sendError(415, contentTypeException.getMessage());
        } catch (Throwable throwable) {
            logger.error(
                    "",
                    throwable.getMessage(),
                    "",
                    "dubbo rest protocol provider error ,and raw request is  " + nettyHttpRequest,
                    throwable);
            nettyHttpResponse.sendError(
                    500,
                    "dubbo rest invoke Internal error, message is " + throwable.getMessage()
                            + " ,and exception type is : " + throwable.getClass() + " , stacktrace is: "
                            + ServiceInvokeRestFilter.stackTraceToString(throwable));
        }

        // second response filter
        try {
            executeFilters(restFilterContext, restResponseFilters);
        } catch (Throwable throwable) {
            logger.error(
                    "",
                    throwable.getMessage(),
                    "",
                    "dubbo rest protocol provider error ,and raw request is  " + nettyHttpRequest,
                    throwable);
            nettyHttpResponse.sendError(
                    500,
                    "dubbo rest invoke Internal error, message is " + throwable.getMessage()
                            + " ,and exception type is : " + throwable.getClass() + " , stacktrace is: "
                            + ServiceInvokeRestFilter.stackTraceToString(throwable));
        }
    }