Как можно установить пользовательский веб -аппласс -загрузчик в причале через конфигурацию?
-
02-10-2019 - |
Вопрос
Я пытаюсь настроить причал (6.x) WebAppContext с помощью пользовательского подкласса WebAppClassLoader. Анкет В коде (Scala) это просто так:
val context = new WebAppContext()
val cwacl = new CustomWebAppClassLoader(context)
context.setClassLoader(cwacl)
...
Это отлично работает при внедрении пристани. В производстве, однако, я просто развернут файл войны в отдельный экземпляр придунка, поэтому нет возможности настраивать вещи в коде, подобном этому.
Я не могу понять, как сделать то же самое через файлы конфигурации Jetty. Любая помощь ценится.
Бонус: как бы вы настроили Maven-Jetty-Plugin Чтобы использовать CustomWebAppClassloader :)
Решение
Вы можете использовать файлы контекста контекста. Есть примеры в contexts/
каталог.
Это было бы что -то в этом направлении:
<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>
(См Ссылка на конфигурацию синтаксиса придурки XML Больше подробностей.)
Другие советы
В качестве альтернативы использованию файла контекста контекста, вы можете установить атрибуты ClassLoader в файле pom.xml для Jetty> = 8.x, например, не сканировать какой-либо класс в Web-Inf для более быстрого запуска:
<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>