Come si fa a impostare un WebAppClassLoader personalizzato in Jetty attraverso config?
-
02-10-2019 - |
Domanda
Sto cercando di configurare un molo (6.x) WebAppContext con una sottoclasse personalizzata di WebAppClassLoader . Nel codice (Scala), è semplicemente questo:
val context = new WebAppContext()
val cwacl = new CustomWebAppClassLoader(context)
context.setClassLoader(cwacl)
...
Questo funziona bene quando l'incorporamento Jetty. Nella produzione, però, ho solo distribuire un file di guerra a un'istanza pontile stand-alone, quindi non c'è alcuna possibilità di cose di configurazione in codice come questo.
Non riesco a capire come fare la stessa cosa con i file di configurazione di Jetty. Ogni aiuto è apprezzato.
Bonus: Come si configura Maven-molo-plugin per utilizzare il CustomWebAppClassLoader:)
Soluzione
Si potrebbe utilizzare i file di configurazione contesto. Ci sono esempi nella directory contexts/
.
Questo sarebbe qualcosa in queste righe:
<Configure id="mycontext1" class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="classLoader">
<New class="f.q.n.CustomWebAppClassLoader">
<Arg><Ref id="mycontext1"/></Arg></New>
</Set>
</Configure>
(Vedere la Jetty XML Sintassi di riferimento di configurazione per maggiori dettagli.)
Altri suggerimenti
In alternativa all'utilizzo di un file di contesto di configurazione, è possibile impostare gli attributi classloader nel file pom.xml, per pontile> = 8.x per esempio Non la scansione di qualsiasi classe all'interno WEB-INF per una più rapida messa in servizio:
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<webApp>
<webInfIncludeJarPattern>^$</webInfIncludeJarPattern>
</webApp>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
</configuration>
</plugin>
</plugins>
Riferimento: Jetty plug-in webapp configurazione