context, jspUri,
isErrorPage, options,
req, res);
boolean outDated = false;
Compiler compiler = null;
synchronized(jsw){
/*
* Creating a compiler opens the associated .class file (if it exists)
* and reads the actual class name. If we allow a compiler to be
* created while a compile is going on then bad things can happen.
*/
compiler = ctxt.createCompiler();
}
try {
outDated = compiler.isOutDated();
if(!jsw.isInstantiated() || outDated ) {
synchronized(jsw){
outDated = compiler.compile();
if(!jsw.isInstantiated() || outDated) {
if( null ==ctxt.getServletClassName() ) {
compiler.computeServletClassName();
}
jsw.instantiateServlet(loader.loadClass(ctxt.getFullClassName()));
}
}
}
} catch(FileNotFoundException ex) {
compiler.removeGeneratedFiles();
throw ex;
} catch(JasperException ex) {
throw ex;
} catch(ClassNotFoundException cex) {
throw new JasperException(Constants.getString("jsp.error.unable.load"),