On 07/04/2015 09:27, Thusitha Thilina Dayaratne wrote: > Hi Mark, > > <snipe/>
:) I think you meant snip rather than snipe. > Try addURL(). > Sorry for the inconvenience. > As I understand addURL() method is defined in WebAppClassLoaderBase. So > should I obtain the WebAppClassLoaderBase using getClassLoader() method and > use reflections to call the addURL() method? No need for reflection. Cast to URLClassloader. Note the cast *should* always work but if someone is using a strange custom class loader it will fail. Note that Tomcat 7 required the class loader to be an instance of WebappClassLoader. Mark > > > Thanks > Best Regards > > On Tue, Apr 7, 2015 at 1:19 PM, Mark Thomas <ma...@apache.org> wrote: > >> On 07/04/2015 07:51, Thusitha Thilina Dayaratne wrote: >>> Hi All, >>> >>> I'm having the same issue. We have extend the WebAppLoader as follows in >>> the Tomcat 7 >>> >>> public class CarbonWebappLoader extends WebappLoader { >>> @Override >>> protected void startInternal() throws LifecycleException { >>> WebappClassloadingContext webappClassloadingContext; >>> try { >>> webappClassloadingContext = >>> ClassloadingContextBuilder.buildClassloadingContext(getWebappFilePath()); >>> } catch (Exception e) { >>> throw new LifecycleException(e.getMessage(), e); >>> } >>> >>> //Adding provided classpath entries, if any >>> for (String repository : >>> webappClassloadingContext.getProvidedRepositories()) { >>> addRepository(repository); >>> } >>> >>> super.startInternal(); >>> >>> //Adding the WebappClassloadingContext to the WebappClassloader >>> ((CarbonWebappClassLoader) >>> getClassLoader()).setWebappCC(webappClassloadingContext); >>> } >>> } >>> >>> Since addRepository method have been removed, what could I do? >> >> Don't top-post. >> >> Read the thread history. The answer has already been provided by Chris. >> >> Mark >> >> >>> >>> >>> Thanks >>> Best Regards >>> /Thusitha >>> >>> On Wed, Mar 18, 2015 at 12:25 AM, Mark Thomas <ma...@apache.org> wrote: >>> >>>> On 17/03/2015 18:30, Ed Rouse wrote: >>>>> >>>>> >>>>>> -----Original Message----- >>>>>> From: Pilkington, Simon [mailto:simo...@amazon.com] >>>>>> Sent: Tuesday, March 17, 2015 12:45 PM >>>>>> To: users@tomcat.apache.org >>>>>> Subject: [Tomcat8] What happened to WebappLoader.addRepository()? >>>>>> >>>>>> 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: >>>>>> >>>>>> >> http://cp.mcafee.com/d/1jWVIq3zqb2rzydPhOCYrKrhKCqenTzhOe7cCQrFCzBZUQsL >>>>>> >> 9ICQrFCzBZUQszxP1J6WpEVvd7aabPxLURrFUalAv3UYKrlAv3UYKrKXHXRTT-LPz5TCnA- >>>>>> >> LsKyev7szsQsIFICzBzBHEShhlKYPOEuvkzaT0QSyrjdTdTdAVPmEBCjGHrpZGSS9_M079R >>>>>> >> lJIOUXHBQaSPlFo01PlJIj_brfjVgT3WWxYs0nO6Hb1mKEv7wsrrFYq5U_dKc2WrWr9EVjb >>>>>> _6HtfelAv3UYK2FRlJI- >>>>>> >> Rrr4_U02rs7e3zpFr1dlrrdUQKCy01iuPd41flBLxW1EwDkQg0bV3lBwHnkfzSE80LRGQBe >>>>>> IiNEEd598S-UrI1Lf5-sL >>>>>> http://cp.mcafee.com/d/2DRPoAd3hJ5xdNN6VEVjudTdETjd7bXNEV73CjqdQPhO- >>>>>> YqenASjqdQPhO- >>>>>> >> YqehMVwSztcQsLCzB55VMTYqJQY5aOfxYundGOfxYundTtRZWXX_nVNyXPbOvnKnh7fzKhK >>>>>> qemkSjhONORQr8EGTupVkffGhBrwqrjdFCXCXCOsVHkiP9RlJI- >>>>>> >> Rrr4_U03AWGSSptXHBQaSPlFo01PlJIj_brfjVgT3WWxYs0nO6Hb1mKEv7wsrrFYq5U_dKc >>>>>> 2WrWr9EVjb_6HtfelAv3UYK2FRlJI- >>>>>> >> Rrr4_U02rs7e3zpFr1dlrrdUQKCy01iuPd41flBLxW1EwDkQg0bV3lBwHnkfzSE80LRGQBe >>>>>> IiNEEd598S-UrHrI5 >>>>>> >>>>>> @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? >>>>> >>>>> JarResourceSet jrs = new JarResourceSet(Context.getResources(), "/", >>>> file.getAbsolutePath(), "/"); >>>>> Context.getResources().addPostResources(jrs); >>>> >>>> Bad idea. That will mount the contents of the JAR at the root of the web >>>> application. >>>> >>>> Mark >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >>>> For additional commands, e-mail: users-h...@tomcat.apache.org >>>> >>>> >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> > > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org