while i am performing load test for my JSF 2.2 application, sometimes i get the following error in logs (BTW i am extracting the viewstate variable in the get request of the jmeter sampler and send that viewstate variable in the post request in the jmeter sampler):
Jul 09 10:21:56 staging i-3a840e59: 09-Jul-2014 17:21:55.490 SEVERE [http-bio-8308-exec-15] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [Faces Servlet] in context with path [] threw exception [String index out of range: -1] with root cause
Jul 09 10:21:56 staging i-3a840e59: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
Jul 09 10:21:56 staging i-3a840e59: at java.lang.String.substring(Unknown Source)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.renderkit.ServerSideStateHelper.getState(ServerSideStateHelper.java:287)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.renderkit.ServerSideStateHelper.isStateless(ServerSideStateHelper.java:484)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.renderkit.ResponseStateManagerImpl.isStateless(ResponseStateManagerImpl.java:168)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:539)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
Jul 09 10:21:56 staging i-3a840e59: at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:353)
Jul 09 10:21:56 staging i-3a840e59: at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66)
Jul 09 10:21:56 staging i-3a840e59: at com.motivosity.web.utils.RestorableViewHandler.restoreView(RestorableViewHandler.java:21)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:197)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121)
Jul 09 10:21:56 staging i-3a840e59: at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
Jul 09 10:21:56 staging i-3a840e59: at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
Jul 09 10:21:56 staging i-3a840e59: at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
Jul 09 10:21:56 staging i-3a840e59: at de.javakaffee.web.msm.RequestTrackingContextValve.invoke(RequestTrackingContextValve.java:99)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
Jul 09 10:21:56 staging i-3a840e59: at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:156)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
Jul 09 10:21:56 staging i-3a840e59: at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
Jul 09 10:21:56 staging i-3a840e59: at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
Jul 09 10:21:56 staging i-3a840e59: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
Jul 09 10:21:56 staging i-3a840e59: at java.lang.Thread.run(Unknown Source)
-i have a RestorableViewHandler class:
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;
}
}
please advise how can i fix this exception.