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

Reply via email to