@Override
	public void service(final ServletRequest req, final ServletResponse res)
			throws ServletException, IOException {
		if (jspFile != null) {
			req.setAttribute(RequestDispatcher.INCLUDE_SERVLET_PATH, jspFile);
		}
		String includeRequestUri = (String) req
				.getAttribute(RequestDispatcher.INCLUDE_REQUEST_URI);

		if (includeRequestUri != null) {
			req.removeAttribute(RequestDispatcher.INCLUDE_REQUEST_URI);
		}

		try {
			ContextClassLoaderUtils.doWithClassLoader(jasperClassLoader,
					new Callable<Void>() {

						@Override
						public Void call() throws Exception {
							jasperServlet.service(req, res);
							return null;
						}

					});
		} catch (ServletException | IOException e) {
			// re-thrown
			throw e;
		} catch (Exception ignore) {
			// ignored as it should never happen
			LOG.error("Ignored exception", ignore);
		}
		//CHECKSTYLE:ON
	}
@ Override public void service ( final ServletRequest req , final ServletResponse res ) throws ServletException , IOException { if ( jspFile != null ) { req . setAttribute ( RequestDispatcher . INCLUDE_SERVLET_PATH , jspFile ) ; } String includeRequestUri = ( String ) req . getAttribute ( RequestDispatcher . INCLUDE_REQUEST_URI ) ; if ( includeRequestUri != null ) { req . removeAttribute ( RequestDispatcher . INCLUDE_REQUEST_URI ) ; } try { ContextClassLoaderUtils . doWithClassLoader ( jasperClassLoader , new Callable < Void > ( ) { @ Override public Void call ( ) throws Exception { jasperServlet . service ( req , res ) ; return null ; } } ) ; } catch ( ServletException | IOException e ) { throw e ; } catch ( Exception ignore ) { LOG . error ( "Ignored exception" , ignore ) ; } }
Delegates to jasper servlet with a controlled context class loader.

@see JspServlet#service(ServletRequest, ServletResponse)