blob: ec646738c3b4f77eaaa8a795cc4afa8ae45d0a12 [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_10_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath"><Property name="hostContext" default="/solr"/></Set>
<Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp</Set>
<Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
<Set name="extractWAR">false</Set>
<!--
The rest of this file is necessary for us to deduplicate jetty server jars in our server build.
Jetty disallows "server" classes that are loaded via the server classloader (live in server/lib/ or server/lib/ext/)
from being used by the Webapp. Solr has a need for many of these classes, especially http and http2 for HTTP Client
libraries.
By default, Solr would need to duplicate these jars between server/lib/ and WEB-INF/lib/.
Therefore, if we want to deduplicate these Jetty jars, we need to remove the class packages that Solr uses from the
Jetty "server" class matcher, using the "-" prefix in from of the sub-package name.
The default server class matcher can be found here:
https://github.com/eclipse/jetty.project/blob/jetty-10.0.12/jetty-webapp/src/main/java/org/eclipse/jetty/webapp/WebAppContext.java#L178
Setting parentLoaderPriority=true is also necessary in order to be able to use these classes from the server classloader.
Documentation for this can be found here: https://www.eclipse.org/jetty/documentation/jetty-10/old_docs/index.html#jetty-classloading
-->
<Set name="parentLoaderPriority">true</Set>
<Call name="addServerClassMatcher">
<Arg>
<New id="removeServerClasses" class="org.eclipse.jetty.webapp.ClassMatcher">
<Arg>
<Array type="java.lang.String">
<Item>-org.eclipse.jetty.</Item>
</Array>
</Arg>
</New>
</Arg>
</Call>
</Configure>