Tomcat 8: запуск веб-приложений в указанном порядке

Использование Tomcat 8.0.15 с Java 8

Сначала мне нужно загрузить определенное WebApp, поэтому я поместил в свой файл server.xml следующее:

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" className="com.my.class.MyCustomHost">
    <Context docBase="app_to_load" path="/app_to_load"/>
</Host>

MyCustomHost выглядит следующим образом:

public class MyCustomHost extends StandardHost {
    public MyCustomHost () {
        super();
        this.children = new LinkedHashMap();
    } }

Эта настройка работала в Tomcat 7.0.42 (с Java 7), но в Tomcat 8.0.15 (с Java 8) я получаю следующую ошибку:

16 апреля 2015 15:36:53 org.apache.tomcat.util.digester.Digester startElement SEVERE: событие Begin выдало ошибку java.lang.IllegalAccessError в com.my.class.MyCustomHost.(MyCustomHost.java:18)

Решение, которое я пытаюсь использовать, было получено отсюда. Любой вклад поможет! Спасибо!

1 ответ

Решение

children это final поле в Tomcat 8 (см. этот исходный код diff), поэтому его изменение запрещено. К счастью, вы можете использовать этот трюк, чтобы установить его LinkedHashMapили используйте указанный хак (с некоторыми небольшими изменениями), чтобы сделать children не-окончательными.

Другие вопросы по тегам