Hi Mark, <snipe/> > @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());
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? 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 > > -- Thusitha Dayaratne Software Engineer WSO2 Inc. - lean . enterprise . middleware | wso2.com Mobile +94712756809 Blog alokayasoya.blogspot.com About http://about.me/thusithathilina