Hey tomcat users, The javadoc for WebappLoader still tells me to use addRepository(), but that method no longer exists. My team has implemented an extension of WebappLoader that looked like this:
https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/loader/WebappLoader.html https://tomcat.apache.org/tomcat-8.0-doc/api/org/apache/catalina/loader/WebappLoader.html @Override protected void startInternal() throws LifecycleException { // validate the context, which is used for debugging messages Context context; { Container container = getContainer(); if (container == null) { throw new LifecycleException("Container is null?!"); } if (!(container instanceof Context)) { throw new LifecycleException("Container is not an instance of Context?!"); } context = (Context) container; } if (ENVIRONMENT_ROOT != null && ENVIRONMENT_ROOT.length() > 0) { // validate targetPackage if (null == targetPackage) { throw new LifecycleException( "Missing required Loader attribute \"targetPackage\" in Context configuration " + context.getConfigFile()); } try { // Excluded jars are those already pulled in by tomcat. Set<String> allExcludedJars = getAllExcludedJars(); Set<String> reallyExcludedJars = new HashSet<String>(); // add JARs from target package as "repositories" // getPackageClasspath finds the list of jars I want to include for this webapp. for (String jar : getPackageClasspath(targetPackage)) { File file = new File(ENVIRONMENT_ROOT, jar); // skip bad and unwanted JARs if (allExcludedJars.contains(jar) || isBadJar(file)) { reallyExcludedJars.add(jar); } else { // TODO: HOW TO FIX ME?? addRepository(file.toURI().toString()); } } log.info("Context path \"" + context.getPath() + "\" excluding JARs: " + reallyExcludedJars); } catch (IOException e) { throw new LifecycleException( "Problem setting classpath for context path \"" + context.getPath() + "\"", e); } // getRepositoriesString() has been renamed to getLoaderRepositoriesString()... log.info("Context path \"" + context.getPath() + "\" using classpath: " + getRepositoriesString()); } else { log.warning("MyWebappLoader seems to be used outside of my environment. Delegating to parent."); } super.startInternal(); } Can the community help me figure out how to upgrade this for tomcat 8?