protected boolean dispatchLocal(HttpServletRequest httpRequest,
			HttpServletResponse httpResponse) throws ServletException,
			IOException {
		if (LOGGER.isLoggable(Level.FINE)) {
			LOGGER.fine("Local dispatch /" + translateRequestPath(httpRequest));
		}
		if (!serveStatic) {
			return false;
		}
//		String contextRelativePath = httpRequest.getServletPath();
		String translatedNoQuery = "/" + translateRequestPath(httpRequest);
//		String absPath = getServletContext().getRealPath(contextRelativePath);
		String absPath = getServletContext().getRealPath(translatedNoQuery);
		if (this.isEnableMemento()) {
			MementoUtils.addDoNotNegotiateHeader(httpResponse);
		}
		//IK: added null check for absPath, it may be null (ex. on jetty)
		if (absPath != null) {
			File test = new File(absPath);
			if((test != null) && !test.exists()) {
				return false;
			}
		}
		String translatedQ = "/" + translateRequestPathQuery(httpRequest);
		WaybackRequest wbRequest = new WaybackRequest();
//			wbRequest.setContextPrefix(getUrlRoot());
		wbRequest.setAccessPoint(this);
		wbRequest.extractHttpRequestInfo(httpRequest);
		UIResults uiResults = new UIResults(wbRequest,uriConverter);
		try {
			uiResults.forward(httpRequest, httpResponse, translatedQ);
			return true;
		} catch(IOException e) {
			// TODO: figure out if we got IO because of a missing dispatcher
		}
		return false;
	}
protected boolean dispatchLocal(HttpServletRequest httpRequest,
			HttpServletResponse httpResponse) throws ServletException,
			IOException {
		if (LOGGER.isLoggable(Level.FINE)) {
			LOGGER.fine("Local dispatch /" + translateRequestPath(httpRequest));
		}
		if (!serveStatic) {
			return false;
		}
		String translatedNoQuery = "/" + translateRequestPath(httpRequest);
		String absPath = getServletContext().getRealPath(translatedNoQuery);
		if (this.isEnableMemento()) {
			MementoUtils.addDoNotNegotiateHeader(httpResponse);
		}
	
		if (absPath != null) {
			File test = new File(absPath);
			if((test != null) && !test.exists()) {
				return false;
			}
		}
		String translatedQ = "/" + translateRequestPathQuery(httpRequest);
		WaybackRequest wbRequest = new WaybackRequest();
		wbRequest.setAccessPoint(this);
		wbRequest.extractHttpRequestInfo(httpRequest);
		UIResults uiResults = new UIResults(wbRequest,uriConverter);
		try {
			uiResults.forward(httpRequest, httpResponse, translatedQ);
			return true;
		} catch(IOException e) {
		
		}
		return false;
	}
protected boolean dispatchlocal(httpservletrequest httprequest, httpservletresponse httpresponse) throws servletexception, ioexception { if (logger.isloggable(level.fine)) { logger.fine("local dispatch /" + translaterequestpath(httprequest)); } if (!servestatic) { return false; } string translatednoquery = "/" + translaterequestpath(httprequest); string abspath = getservletcontext().getrealpath(translatednoquery); if (this.isenablememento()) { mementoutils.adddonotnegotiateheader(httpresponse); } if (abspath != null) { file test = new file(abspath); if((test != null) && !test.exists()) { return false; } } string translatedq = "/" + translaterequestpathquery(httprequest); waybackrequest wbrequest = new waybackrequest(); wbrequest.setaccesspoint(this); wbrequest.extracthttprequestinfo(httprequest); uiresults uiresults = new uiresults(wbrequest,uriconverter); try { uiresults.forward(httprequest, httpresponse, translatedq); return true; } catch(ioexception e) { } return false; }