Comment peut-on définir un WebAppClassLoader personnalisé dans la jetée par config?
-
02-10-2019 - |
Question
Je suis en train de configurer une jetée (6.x) WebAppContext avec une sous-classe personnalisée de WebAppClassLoader . Dans le code (Scala), il est tout simplement ceci:
val context = new WebAppContext()
val cwacl = new CustomWebAppClassLoader(context)
context.setClassLoader(cwacl)
...
Cela fonctionne bien lors de l'intégration jetée. Dans la production, cependant, je déploie juste un fichier de guerre à une instance de la jetée autonome, donc il n'y a aucune possibilité de configurer les choses dans le code comme celui-ci.
Je ne peux pas comprendre comment faire la même chose via les fichiers de configuration de la jetée. Toute aide est appréciée.
Bonus: Comment voulez-vous configurer maven-plugin-jetée utiliser le CustomWebAppClassLoader:)
La solution
Vous pouvez utiliser les fichiers de configuration de contexte. Il existe des exemples dans le répertoire contexts/
.
Ce serait quelque chose le long de ces lignes:
<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>
(Voir la Jetty XML référence de configuration Syntaxe pour plus de détails.)
Autres conseils
Comme une alternative à l'aide d'un fichier de configuration de contexte, vous pouvez définir les attributs de classloader dans le fichier pom.xml, pour la jetée> = 8.x par exemple pas numériser toute classe dans WEB-INF pour un démarrage plus rapide:
<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>
Référence: plug-in Jetty webapp configuration