Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 如何找出ServerSideStateHelper中StringIndexOutOfBoundsException的原因?_Jsf 2_Jsf 2.2 - Fatal编程技术网

Jsf 2 如何找出ServerSideStateHelper中StringIndexOutOfBoundsException的原因?

Jsf 2 如何找出ServerSideStateHelper中StringIndexOutOfBoundsException的原因?,jsf-2,jsf-2.2,Jsf 2,Jsf 2.2,当我为JSF 2.2应用程序执行负载测试时,有时会在日志中出现以下错误(顺便说一句,我在jmeter采样器的get请求中提取viewstate变量,并在jmeter采样器的post请求中发送该viewstate变量): -我有一个可恢复的ViewHandler类: import javax.faces.application.ViewHandler; import javax.faces.application.ViewHandlerWrapper; import javax.faces.com

当我为JSF 2.2应用程序执行负载测试时,有时会在日志中出现以下错误(顺便说一句,我在jmeter采样器的get请求中提取viewstate变量,并在jmeter采样器的post请求中发送该viewstate变量):

-我有一个可恢复的ViewHandler类:

import javax.faces.application.ViewHandler;
import javax.faces.application.ViewHandlerWrapper;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;

import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RestorableViewHandler extends ViewHandlerWrapper {

    private static final Logger log = (Logger) LoggerFactory.getLogger(RestorableViewHandler.class);

    private ViewHandler wrapped;

    public RestorableViewHandler(ViewHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public UIViewRoot restoreView(FacesContext context, String viewId) {
        UIViewRoot createdView = null;
        try {
            UIViewRoot restoredView = wrapped.restoreView(context, viewId);

            if (!(restoredView == null && context.isPostback())) {
                return restoredView;
            }

            createdView = createView(context, viewId);
            context.setViewRoot(createdView);
            getViewDeclarationLanguage(context, viewId).buildView(context, createdView);
        } catch (Exception e) {
            if (log.isErrorEnabled()) {
                log.error("################### viewId: " + viewId);
                log.error("################### createdView: " + createdView);
                log.error("Exception happened in restoreView: " + ExceptionUtils.getFullStackTrace(e));
            }
        }

        return createdView;
    }

    @Override
    public ViewHandler getWrapped() {
        return wrapped;
    }

}

请告知我如何修复此异常。

此情况是否仅在负载测试期间发生,还是在应用程序正常使用期间发生?@kolossus仅在负载测试中发生
import javax.faces.application.ViewHandler;
import javax.faces.application.ViewHandlerWrapper;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;

import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class RestorableViewHandler extends ViewHandlerWrapper {

    private static final Logger log = (Logger) LoggerFactory.getLogger(RestorableViewHandler.class);

    private ViewHandler wrapped;

    public RestorableViewHandler(ViewHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public UIViewRoot restoreView(FacesContext context, String viewId) {
        UIViewRoot createdView = null;
        try {
            UIViewRoot restoredView = wrapped.restoreView(context, viewId);

            if (!(restoredView == null && context.isPostback())) {
                return restoredView;
            }

            createdView = createView(context, viewId);
            context.setViewRoot(createdView);
            getViewDeclarationLanguage(context, viewId).buildView(context, createdView);
        } catch (Exception e) {
            if (log.isErrorEnabled()) {
                log.error("################### viewId: " + viewId);
                log.error("################### createdView: " + createdView);
                log.error("Exception happened in restoreView: " + ExceptionUtils.getFullStackTrace(e));
            }
        }

        return createdView;
    }

    @Override
    public ViewHandler getWrapped() {
        return wrapped;
    }

}