@ Deprecated protected Context createContext ( ) throws Exception { Context context = null ; final String webapp = configuration . getWebapp ( ) ; final String path = configuration . getPath ( ) ; final String classpath = configuration . getClasspath ( ) ; final boolean forceMetaInf = configuration . isForceMetaInf ( ) ; final ClassLoader parentClassLoader = configuration . getParentClasspath ( ) ; final String descriptor = configuration . getOverrideDescriptor ( ) ; File webappDirectory = new File ( webapp ) ; if ( webappDirectory . exists ( ) ) { String webappAbsolutePath = webappDirectory . getAbsolutePath ( ) ; tomcat . getHost ( ) . setAppBase ( webappAbsolutePath ) ; context = tomcat . addWebapp ( path , webappAbsolutePath ) ; // Add additional classpath entry if ( isNotBlank ( classpath ) ) { File file = new File ( classpath ) ; if ( file . exists ( ) ) { // Check that additional classpath entry contains META-INF directory File metaInf = new File ( file , "META-INF" ) ; if ( ! metaInf . exists ( ) && forceMetaInf ) { metaInf . mkdir ( ) ; } // == Tomcat 8 String absolutePath = file . getAbsolutePath ( ) ; StandardRoot root = new StandardRoot ( context ) ; root . createWebResourceSet ( WebResourceRoot . ResourceSetType . PRE , "/WEB-INF/classes" , absolutePath , null , path ) ; context . setResources ( root ) ; // == Tomcat 8 // == Tomcat 7 // String s = file.toURI().toString(); // loader.addRepository(s); // == Tomcat 7 // Used to scan additional classpath directory // https://issues.apache.org/bugzilla/show_bug.cgi?id=52853 ( ( StandardJarScanner ) context . getJarScanner ( ) ) . setScanAllDirectories ( true ) ; } } // Custom parent classloader. final ClassLoader threadCl = Thread . currentThread ( ) . getContextClassLoader ( ) ; final ClassLoader tomcatParentClassLoader ; if ( parentClassLoader != null ) { tomcatParentClassLoader = new CompositeClassLoader ( parentClassLoader , threadCl ) ; } else { tomcatParentClassLoader = threadCl ; } // Set the parent class loader that will be given // to the created loader. // // Setting the parent class loader here is a shortcut for (code in previous versions): // // Loader loader = context.getLoader(); // if (loader == null) { // loader = new WebappLoader(parentClassLoader); // } // context . setParentClassLoader ( tomcatParentClassLoader ) ; // Override web.xml path if ( descriptor != null ) { context . setAltDDName ( descriptor ) ; } } return context ; }
Create tomcat context . May be override by subclasses .