Thanks Jan - The confirmation is certainly helpful.

Is extraClasspath coming before WEB-INF/classes in that list desirable?

I can see an argument for it I suppose, because knowing this I could take
someone else’s .war file and selectively replace their classes or resources
with an extraClasspath .jar of my own…

In any case, I think it’s clear that I’ll need to resolve the conflict by
renaming the resource for the time being.

Cheers,
Matt


> AFAIK we don't do any special handling of the extra classpath.  The order
> of paths that are added to the URLClassLoader that is the webapp
> classloader is:
>
> * extra classpath
> * WEB-INF/classes
> * WEB-INF/lib/*.jar
>
> The webapp classloader getResource(String) method first looks in itself
> before looking in the parent (to conform to servlet spec inverted
> classloading requirements), however the looking is all delegated to the
> URLClassLoader, so it is whatever ordering the jvm has implemented, which
> according to GrepCode
> http://grepcode.com/file/repository.grepcode.com/java/
> root/jdk/openjdk/6-b14/sun/misc/URLClassPath.java#URLClassPath.0urls
> looks like the search order will be as above.
>
> cheers
> Jan
>
> On 21 April 2017 at 13:48, Matthew Sheppard <[email protected]>
> wrote:
>
> > TL;DR: Is it expected that resources in .jar files included
> > via WebAppContext?s setExtraClasspath method would be loaded in
> > preference to resources with the same name/path within the .war?
> >
> > ??
> >
> > I?m in the process of moving some dependencies out of .war files and
> > including them instead via WebAppContext?s setExtraClasspath method (
> > http://www.eclipse.org/jetty/documentation/current/jetty-
> > classloading.html#using-extra-classpath-method)
> >
> > While doing so, I ran into a problem where one of the .jar files now
> moved
> > out contains an ehcache.xml file, which seems to be read in preference to
> > the one within the .war when `Thread.currentThread().
> > getContextClassLoader().getResourceAsStream(?ehcache.xml?)` is used.
> >
> > Now that I know that to be the case, I guess it?s not a big inconvenience
> > to me if I need to rename the file to be unique, but I guess I?m
> wondering?
> >
> > - Am I loading the resource incorrectly (and if so, how can I do it to
> the
> > .war takes priority)?
> >
> > - Was it only luck that the .war version took precedence previously (when
> > the .jar in question was packed within the .war)?
> >
> > - Is this an expected drawback of using setExtraClasspath that I just
> have
> > to live with?
> >
> > - Did I miss some documentation somewhere which would have clarified this
> > for me?
> >
> >
> > Many thanks for any pointers,
> > Matt
>
_______________________________________________
jetty-users mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users

Reply via email to