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
не-окончательными.