Package com.alibaba.citrus.service.requestcontext

Examples of com.alibaba.citrus.service.requestcontext.RequestContext


        }
    }

    /** 取得request context对象。 */
    private RequestContext getRequestContext(HttpServletRequest request, HttpServletResponse response) {
        RequestContext requestContext = RequestContextUtil.getRequestContext(request);

        if (requestContext == null) {
            requestContext = requestContexts.getRequestContext(getServletContext(), request, response);

            request.setAttribute(REQUEST_CONTEXT_OWNER_KEY, this);
View Full Code Here


                                            HttpServletResponse response) {
        assertInitialized();

        // 异步请求(dispatcherType == ASYNC)开始时,如果已经存在request context,则直接取得并返回之。
        boolean asyncDispatcher = request_isDispatcherType(request, DISPATCHER_TYPE_ASYNC);
        RequestContext requestContext = null;

        if (asyncDispatcher) {
            requestContext = RequestContextUtil.getRequestContext(request);
        }

        if (requestContext == null) {
            SimpleRequestContext innerReuestContext = new SimpleRequestContext(servletContext, request, response, this);

            requestContext = innerReuestContext;

            // 将requestContext放入request中,以便今后只需要用request就可以取得requestContext。
            // 及早设置setRequestContext,以便随后的prepareRequestContext就能使用。
            RequestContextUtil.setRequestContext(requestContext);

            for (RequestContextFactory<?> factory : factories) {
                requestContext = factory.getRequestContextWrapper(requestContext);

                // 调用<code>requestContext.prepare()</code>方法
                prepareRequestContext(requestContext);

                // 将requestContext放入request中,以便今后只需要用request就可以取得requestContext。
                RequestContextUtil.setRequestContext(requestContext);
            }

            innerReuestContext.setTopRequestContext(requestContext);

            getLogger().debug("Created a new request context: {}", requestContext);
        }

        // 无论是否是从async恢复,都需要重新设置thread的上下文环境。
        bind(requestContext.getRequest());

        return requestContext;
    }
View Full Code Here

    private final class ResponseProxyTargetFactory extends RequestProxyTargetFactory {
        @Override
        public Object getObject() {
            HttpServletRequest request = (HttpServletRequest) super.getObject();
            RequestContext requestContext = RequestContextUtil.getRequestContext(request);

            if (requestContext == null) {
                throw new IllegalStateException("Current request does not support request context");
            }

            return requestContext.getResponse();
        }
View Full Code Here

    private final class SessionProxyTargetFactory extends RequestProxyTargetFactory {
        @Override
        public Object getObject() {
            HttpServletRequest request = (HttpServletRequest) super.getObject();
            RequestContext requestContext = RequestContextUtil.getRequestContext(request);

            if (requestContext == null) {
                throw new IllegalStateException("Current request does not support request context");
            }

            return requestContext.getRequest().getSession();
        }
View Full Code Here

        @Override
        public Object getObject() {
            HttpServletRequest request = (HttpServletRequest) super.getObject();

            RequestContext requestContext = RequestContextUtil.findRequestContext(request, requestContextInterface);

            if (requestContext == null) {
                throw new IllegalStateException("Current request does not support request context: "
                                                + requestContextInterface.getName());
            }
View Full Code Here

    public void onFinishedProcessContext() {
    }

    public final void service(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
            throws Exception {
        RequestContext requestContext = null;

        try {
            requestContext = assertNotNull(getRequestContext(request, response), "could not get requestContext");

            // 如果请求已经结束,则不执行进一步的处理。例如,当requestContext已经被重定向了,则立即结束请求的处理。
            if (isRequestFinished(requestContext)) {
                return;
            }

            // 请求未结束,则继续处理...
            request = requestContext.getRequest();
            response = requestContext.getResponse();

            // 如果是一个内部请求,则执行内部请求
            if (handleInternalRequest(request, response)) {
                return;
            }
View Full Code Here

        }
    }

    /** 取得request context对象。 */
    private RequestContext getRequestContext(HttpServletRequest request, HttpServletResponse response) {
        RequestContext requestContext = RequestContextUtil.getRequestContext(request);

        if (requestContext == null) {
            requestContext = requestContexts.getRequestContext(getServletContext(), request, response);

            request.setAttribute(REQUEST_CONTEXT_OWNER_KEY, this);
View Full Code Here

        if (resultObject == null) {
            return;
        }

        RequestContext rc = getRequestContext(this.request);
        final HttpServletRequest request = rc.getRequest();
        HttpServletResponse response = rc.getResponse();

        final AsyncContext asyncContext = request.startAsync(request, response);

        final AsyncCallbackAdapter callback = new AsyncCallbackAdapter(resultObject, asyncContext, getDefaultTimeout(), getDefaultCancelingTimeout());
        setOutputValue(pipelineContext, callback);
View Full Code Here

     */
    public RequestContext getRequestContext(ServletContext servletContext, HttpServletRequest request,
                                            HttpServletResponse response) {
        assertInitialized();

        RequestContext requestContext = new SimpleRequestContext(servletContext, request, response);

        // 将requestContext放入request中,以便今后只需要用request就可以取得requestContext。
        // 及早设置setRequestContext,以便随后的prepareRequestContext就能使用。
        RequestContextUtil.setRequestContext(requestContext);

        for (RequestContextFactory<?> factory : factories) {
            requestContext = factory.getRequestContextWrapper(requestContext);

            // 调用<code>requestContext.prepare()</code>方法
            prepareRequestContext(requestContext);

            // 将requestContext放入request中,以便今后只需要用request就可以取得requestContext。
            RequestContextUtil.setRequestContext(requestContext);
        }

        setupSpringWebEnvironment(requestContext.getRequest());

        return requestContext;
    }
View Full Code Here

    public void onFinishedProcessContext() {
    }

    public final void service(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
            throws Exception {
        RequestContext requestContext = null;

        try {
            requestContext = assertNotNull(getRequestContext(request, response), "could not get requestContext");

            // 如果请求已经结束,则不执行进一步的处理。例如,当requestContext已经被重定向了,则立即结束请求的处理。
            if (isRequestFinished(requestContext)) {
                return;
            }

            // 请求未结束,则继续处理...
            request = requestContext.getRequest();
            response = requestContext.getResponse();

            // 如果是一个内部请求,则执行内部请求
            if (handleInternalRequest(request, response)) {
                return;
            }
View Full Code Here

TOP

Related Classes of com.alibaba.citrus.service.requestcontext.RequestContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.